`
hududanyzd
  • 浏览: 815457 次
文章分类
社区版块
存档分类
最新评论

C#调用Win32 的API函数--User32.dll

 
阅读更多
Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的。有时候我们之直接调用Win32 的API,可以很高效的实现想要的效果。

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Runtime.InteropServices;

namespaceWindowsAPI
{
classCSharp_Win32Api
{
#regionUser32.dll函数
///<summary>
///该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。hWnd:设备上下文环境被检索的窗口的句柄
///</summary>
[DllImport("user32.dll",CharSet=CharSet.Auto)]
publicstaticexternIntPtrGetDC(IntPtrhWnd);
///<summary>
///函数释放设备上下文环境(DC)供其他应用程序使用。
///</summary>
publicstaticexternintReleaseDC(IntPtrhWnd,IntPtrhDC);
///<summary>
///该函数返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。
///</summary>
staticpublicexternIntPtrGetDesktopWindow();
///<summary>
///该函数设置指定窗口的显示状态。
///</summary>
staticpublicexternboolShowWindow(IntPtrhWnd,shortState);
///<summary>
///通过发送重绘消息WM_PAINT给目标窗体来更新目标窗体客户区的无效区域。
///</summary>
staticpublicexternboolUpdateWindow(IntPtrhWnd);
///<summary>
///该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。
///</summary>
staticpublicexternboolSetForegroundWindow(IntPtrhWnd);
///<summary>
///该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。
///</summary>
staticpublicexternboolSetWindowPos(IntPtrhWnd,IntPtrhWndInsertAfter,intx,inty,intWidth,intHeight,uintflags);
///<summary>
///打开剪切板
///</summary>
staticpublicexternboolOpenClipboard(IntPtrhWndNewOwner);
///<summary>
///关闭剪切板
///</summary>
staticpublicexternboolCloseClipboard();
///<summary>
///打开清空</summary>
staticpublicexternboolEmptyClipboard();
///<summary>
///将存放有数据的内存块放入剪切板的资源管理中
///</summary>
staticpublicexternIntPtrSetClipboardData(uintFormat,IntPtrhData);
///<summary>
///在一个矩形中装载指定菜单条目的屏幕坐标信息
///</summary>
staticpublicexternboolGetMenuItemRect(IntPtrhWnd,IntPtrhMenu,uintItem,refRECTrc);

[DllImport(
"user32.dll",ExactSpelling=true,CharSet=CharSet.Auto)]
///<summary>
///该函数获得一个指定子窗口的父窗口句柄。
///</summary>
publicstaticexternIntPtrGetParent(IntPtrhWnd);
///<summary>
///该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。 
///</summary>
///<paramname="hWnd">其窗口程序将接收消息的窗口的句柄</param>
///<paramname="msg">指定被发送的消息</param>
///<paramname="wParam">指定附加的消息指定信息</param>
///<paramname="lParam">指定附加的消息指定信息</param>
///<returns></returns>
publicstaticexternintSendMessage(IntPtrhWnd,intmsg,intwParam,intlParam);
publicstaticexternIntPtrSendMessage(IntPtrhWnd,intmsg,intwParam,IntPtrlParam);
publicstaticexternvoidSendMessage(IntPtrhWnd,intmsg,intwParam,refRECTlParam);
publicstaticexternintSendMessage(IntPtrhWnd,intmsg,intwParam,refPOINTlParam);
publicstaticexternvoidSendMessage(IntPtrhWnd,intmsg,intwParam,refTBBUTTONlParam);
publicstaticexternvoidSendMessage(IntPtrhWnd,intmsg,intwParam,refTBBUTTONINFOlParam);
publicstaticexternintSendMessage(IntPtrhWnd,intmsg,intwParam,refREBARBANDINFOlParam);
publicstaticexternvoidSendMessage(IntPtrhWnd,intmsg,intwParam,refTVITEMlParam);
publicstaticexternvoidSendMessage(IntPtrhWnd,intmsg,intwParam,refLVITEMlParam);
publicstaticexternvoidSendMessage(IntPtrhWnd,intmsg,intwParam,refHDITEMlParam);
publicstaticexternvoidSendMessage(IntPtrhWnd,intmsg,intwParam,refHD_HITTESTINFOhti);
///<summary>
///该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里
///</summary>
publicstaticexternIntPtrPostMessage(IntPtrhWnd,intmsg,intwParam,intlParam);
publicstaticexternIntPtrSetWindowsHookEx(inthookid,HookProcpfnhook,IntPtrhinst,intthreadid);

[DllImport(
"user32.dll",CharSet=CharSet.Auto,ExactSpelling=true)]
publicstaticexternboolUnhookWindowsHookEx(IntPtrhhook);

[DllImport(
"user32.dll",CharSet=CharSet.Auto,ExactSpelling=true)]
publicstaticexternIntPtrCallNextHookEx(IntPtrhhook,intcode,IntPtrwparam,IntPtrlparam);
///<summary>
///该函数对指定的窗口设置键盘焦点。
///</summary>
publicstaticexternIntPtrSetFocus(IntPtrhWnd);
///<summary>
///该函数在指定的矩形里写入格式化文本,根据指定的方法对文本格式化(扩展的制表符,字符对齐、折行等)。
///</summary>
publicexternstaticintDrawText(IntPtrhdc,stringlpString,intnCount,refRECTlpRect,intuFormat);
///<summary>
///该函数改变指定子窗口的父窗口。
///</summary>
publicexternstaticIntPtrSetParent(IntPtrhChild,IntPtrhParent);
///<summary>
///获取对话框中子窗口控件的句柄
///</summary>
publicexternstaticIntPtrGetDlgItem(IntPtrhDlg,intnControlID);
///<summary>
///该函数获取窗口客户区的坐标。
///</summary>
publicexternstaticintGetClientRect(IntPtrhWnd,refRECTrc);
///<summary>
///该函数向指定的窗体添加一个矩形,然后窗口客户区域的这一部分将被重新绘制。
///</summary>
publicexternstaticintInvalidateRect(IntPtrhWnd,IntPtrrect,intbErase);
///<summary>
///该函数产生对其他线程的控制,如果一个线程没有其他消息在其消息队列里。
///</summary>
publicstaticexternboolWaitMessage();
///<summary>
///该函数为一个消息检查线程消息队列,并将该消息(如果存在)放于指定的结构。
///</summary>
publicstaticexternboolPeekMessage(refMSGmsg,inthWnd,uintwFilterMin,uintwFilterMax,uintwFlag);
///<summary>
///该函数从调用线程的消息队列里取得一个消息并将其放于指定的结构。此函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息。此函数接收一定范围的消息值。
///</summary>
publicstaticexternboolGetMessage(refMSGmsg,inthWnd,uintwFilterMin,uintwFilterMax);
///<summary>
///该函数将虚拟键消息转换为字符消息。
///</summary>
publicstaticexternboolTranslateMessage(refMSGmsg);
///<summary>
///该函数调度一个消息给窗口程序。
///</summary>
publicstaticexternboolDispatchMessage(refMSGmsg);
///<summary>
///该函数从一个与应用事例相关的可执行文件(EXE文件)中载入指定的光标资源.
///</summary>
publicstaticexternIntPtrLoadCursor(IntPtrhInstance,uintcursor);
///<summary>
///该函数确定光标的形状。
///</summary>
publicstaticexternIntPtrSetCursor(IntPtrhCursor);
///<summary>
///确定当前焦点位于哪个控件上。
///</summary>
publicstaticexternIntPtrGetFocus();
///<summary>
///该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中。
///</summary>
publicstaticexternboolReleaseCapture();
///<summary>
///准备指定的窗口来重绘并将绘画相关的信息放到一个PAINTSTRUCT结构中。
///</summary>
publicstaticexternIntPtrBeginPaint(IntPtrhWnd,refPAINTSTRUCTps);
///<summary>
///标记指定窗口的绘画过程结束,每次调用BeginPaint函数之后被请求
///</summary>
publicstaticexternboolEndPaint(IntPtrhWnd,refPAINTSTRUCTps);
///<summary>
///半透明窗体
///</summary>
publicstaticexternboolUpdateLayeredWindow(IntPtrhwnd,IntPtrhdcDst,refPOINTpptDst,refSIZEpsize,IntPtrhdcSrc,refPOINTpprSrc,Int32crKey,refBLENDFUNCTIONpblend,Int32dwFlags);
///<summary>
///该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
///</summary>
publicstaticexternboolGetWindowRect(IntPtrhWnd,refRECTrect);
///<summary>
///该函数将指定点的用户坐标转换成屏幕坐标。
///</summary>
publicstaticexternboolClientToScreen(IntPtrhWnd,refPOINTpt);
///<summary>
///当在指定时间内鼠标指针离开或盘旋在一个窗口上时,此函数寄送消息。
///</summary>
publicstaticexternboolTrackMouseEvent(refTRACKMOUSEEVENTStme);
///<summary>
///
///</summary>
publicstaticexternboolSetWindowRgn(IntPtrhWnd,IntPtrhRgn,boolredraw);
///<summary>
///该函数检取指定虚拟键的状态。
///</summary>
publicstaticexternushortGetKeyState(intvirtKey);
///<summary>
///该函数改变指定窗口的位置和尺寸。对于顶层窗口,位置和尺寸是相对于屏幕的左上角的:对于子窗口,位置和尺寸是相对于父窗口客户区的左上角坐标的。
///</summary>
publicstaticexternboolMoveWindow(IntPtrhWnd,intx,inty,intwidth,intheight,boolrepaint);
///<summary>
///该函数获得指定窗口所属的类的类名。
///</summary>
publicstaticexternintGetClassName(IntPtrhWnd,outSTRINGBUFFERClassName,intnMaxCount);
///<summary>
///该函数改变指定窗口的属性
///</summary>
publicstaticexternintSetWindowLong(IntPtrhWnd,intnIndex,intdwNewLong);
///<summary>
///该函数检索指定窗口客户区域或整个屏幕的显示设备上下文环境的句柄,在随后的GDI函数中可以使用该句柄在设备上下文环境中绘图。
///</summary>
publicstaticexternIntPtrGetDCEx(IntPtrhWnd,IntPtrhRegion,uintflags);
///<summary>
///获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景返回值Long。
///</summary>
publicstaticexternIntPtrGetWindowDC(IntPtrhWnd);
///<summary>
///该函数用指定的画刷填充矩形,此函数包括矩形的左上边界,但不包括矩形的右下边界。
///</summary>
publicstaticexternintFillRect(IntPtrhDC,refRECTrect,IntPtrhBrush);
///<summary>
///该函数返回指定窗口的显示状态以及被恢复的、最大化的和最小化的窗口位置。
///</summary>
publicstaticexternintGetWindowPlacement(IntPtrhWnd,refWINDOWPLACEMENTwp);
///<summary>
///该函数改变指定窗口的标题栏的文本内容
///</summary>
publicstaticexternintSetWindowText(IntPtrhWnd,stringtext);
///<summary>
///该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控制,则拷贝控制的文本。
///</summary>
publicstaticexternintGetWindowText(IntPtrhWnd,outSTRINGBUFFERtext,intmaxCount);
///<summary>
///用于得到被定义的系统数据或者系统配置信息.
///</summary>
staticpublicexternintGetSystemMetrics(intnIndex);
///<summary>
///该函数设置滚动条参数,包括滚动位置的最大值和最小值,页面大小,滚动按钮的位置。
///</summary>
staticpublicexternintSetScrollInfo(IntPtrhwnd,intbar,refSCROLLINFOsi,intfRedraw);
///<summary>
///该函数显示或隐藏所指定的滚动条。
///</summary>
publicstaticexternintShowScrollBar(IntPtrhWnd,intbar,intshow);
///<summary>
///该函数可以激活一个或两个滚动条箭头或是使其失效。
///</summary>
publicstaticexternintEnableScrollBar(IntPtrhWnd,uintflags,uintarrows);
///<summary>
///该函数将指定的窗口设置到Z序的顶部。
///</summary>
publicstaticexternintBringWindowToTop(IntPtrhWnd);
///<summary>
///该函数滚动指定窗体客户区域的目录。
///</summary>
staticpublicexternintScrollWindowEx(IntPtrhWnd,intdx,intdy,refRECTrcScroll,refRECTrcClip,IntPtrUpdateRegion,refRECTrcInvalidated,uintflags);
///<summary>
///该函数确定给定的窗口句柄是否识别一个已存在的窗口。
///</summary>
publicstaticexternintIsWindow(IntPtrhWnd);
///<summary>
///该函数将256个虚拟键的状态拷贝到指定的缓冲区中。
///</summary>
publicstaticexternintGetKeyboardState(byte[]pbKeyState);
///<summary>
///该函数将指定的虚拟键码和键盘状态翻译为相应的字符或字符串。该函数使用由给定的键盘布局句柄标识的物理键盘布局和输入语言来翻译代码。
///</summary>
publicstaticexternintToAscii(intuVirtKey,intuScanCode,byte[]lpbKeyState,byte[]lpwTransKey,intfuState);
#endregion

}
}


分享到:
评论

相关推荐

    C# 调用win32 api函数-user32.dll详细说明

    ### C# 调用 Win32 API 函数——user32.dll 详细说明 #### 概述 在开发基于 Windows 的应用时,有时需要直接调用底层的 Windows API 函数来实现某些功能,比如获取窗口句柄、绘制图形、控制窗口等。这些功能可以...

    C#_调用win32的API函数--user32.dll

    C#_调用win32的API函数--user32.dll实现窗体的多显示效果(四周扩展,中间缩小,折叠显示,淡入淡出效果)

    c#_调用win32的API函数--user32.dll.doc

    Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的。有时候我们之直接调用Win32 的API,可以很高效的实现想要的效果。

    最简单的C#调用dll文件(user32.dll)

    MessageBox(IntPtr.Zero, "这是来自user32.dll的消息", "C#调用示例", 0); } } ``` 在这个例子中,我们导入了`MessageBox`函数,指定了其所在的dll文件,并设置了`SetLastError`参数为`true`以便于错误处理。`...

    C# 使用user32.dll找窗体,填数据

    总结,通过C#调用`user32.dll`的`FindWindow`和`GetClassName`函数,可以实现查找具有特定类名的窗体,并获取其实际类名,从而适应类名动态变化的情况。一旦找到窗体,还可以进一步进行数据填充和其他操作。然而,...

    C#调用Win32的API函数–User32.dll

    Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的。有时候我们之直接调用Win32 的API,可以很高效的实现想要的效果。 代码 using System; using System.Collections.Generic;...

    C# 调用 Win32 API 源码

    2. **定义API函数**:在"Win32API.cs"文件中,通常会看到一系列静态类,每个类代表一个特定的DLL,如`Kernel32`或`User32`。这些类中的静态方法对应于Win32 API函数,如`GetWindowText`或`CreateProcess`。例如: `...

    c#通过win32api方式创建窗体

    "c#通过win32api方式创建窗体"这个主题涉及到如何使用C#语言来创建一个窗体,而不是依赖.NET Framework的System.Windows.Forms命名空间中的Form类。下面我们将深入探讨这一技术。 首先,Win32 API是Windows操作系统...

    C#调用Win32类库几个例子.rar

    本压缩包文件"**C#调用Win32类库几个例子.rar**"提供了一些示例,帮助开发者了解如何在C#中调用Win32 API来实现特定任务。 首先,让我们理解什么是Win32 API。Win32 API是微软Windows操作系统提供的函数库,包含了...

    从.NET平台调用Win32 API

    - 假设我们要调用Win32 API的`MessageBox`函数,来自user32.dll,它的原型是: ```c int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); ``` - 在C#中,我们可以这样定义: ```...

    API C_调用Win32_的API函数

    总的来说,C#调用Win32 API函数是一种常见的跨语言交互方式,允许我们在.NET环境中利用Windows系统的底层功能。但这种方式需要对Win32 API有深入理解,并且要注意内存管理和错误处理。正确地使用这些API可以极大地...

    C#dllimport调用 C# 调用Win32

    "C#调用Win32"通常涉及以下关键概念: 1. **P/Invoke**:这是.NET Framework提供的一个特性,允许托管代码调用非托管代码,包括本地DLL函数。P/Invoke涉及到类型转换、内存管理以及异常处理等复杂问题。 2. **...

    在C#中调用API函数.

    C# 中调用 API 函数 在 C# 中调用 API 函数是一种常见的编程技术,用于实现与操作系统或其他应用程序之间的交互。在本文中,我们将介绍如何在 C# 中调用 API 函数,并提供了一些实际示例代码。 一、什么是 API ...

    win32 API 调用

    #### 三、示例:C#调用Windows API函数 以下是一个具体的例子,展示如何在C#中调用User32.dll中的`MessageBox`函数。 ```csharp using System; using System.Runtime.InteropServices; public class Win32 { // ...

    C# 通过Win32的API来调用系统菜单

    在C#编程中,有时我们需要访问和操作Windows操作系统的...总的来说,通过C#调用Win32 API来操作系统菜单是一项进阶技术,需要对Windows编程有一定了解。掌握这个技能可以让你在编写桌面应用程序时拥有更大的灵活性。

    CyUSB.dll文件调用接口函数说明

    根据提供的文件信息,我们可以了解到关于“CyUSB.dll文件调用接口函数说明”的相关知识点。CyUSB.dll是Cypress半导体公司为其USB控制器提供的应用程序接口动态链接库。以下是详细的知识点说明: 1. **CyUSB.dll的...

    C# win32 API编程

    根据给定的信息,本文将详细探讨C#与Win32 API编程的相关知识点,包括但不限于为何在C#中调用Win32 API、如何调用、以及具体的实例代码分析。 ### 1. 为什么要在C#中调用Win32 API 尽管.NET Framework提供了一系列...

    C#调用Windows API函数

    1. 引用DLL:首先,我们需要知道目标API函数所在的动态链接库(DLL)文件,如kernel32.dll、user32.dll等。在C#代码中,我们通过`using System.Runtime.InteropServices;`引入`DllImport`特性来引用这些DLL。 2. ...

    C#利用win32API测试系统.txt

    1. 引用DLL:Win32 API函数通常包含在动态链接库(DLL)文件中,如kernel32.dll或user32.dll。在C#中,我们使用`DllImport`属性从这些库中导入函数。例如,要导入`kernel32.dll`中的`GetVersionEx`函数,我们可以...

Global site tag (gtag.js) - Google Analytics