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

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详细说明

    user32.dll调用说明,系统调用api函数 user32.dll 参数详细说明

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

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

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

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

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

    主要介绍了C#调用Win32_的API函数--User32.dll,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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

    C# 调用c++ 库 参数为指针类型导出函数

    c# Csharp调用 c++库 参数为导入和导出指针两种 包含C++ DLL源码 如fun(cont char* A,char*B) A为输入参数,B为输出参数-C# CSharp call C++ DLL lib dll function param use export and import eg: fun(cont char*...

    win32 API 调用

    Visual C#和其它开发工具一样也能够调用动态链接库的API函数。 .Net框架本身提供了这样一种服务,允许受管辖的代码调用动态链接库中实现的非受管辖函数,包括操作系统提供 的Windows API函数。它能够定位和调用输出...

    C#制作屏幕捕获程序(好).doc

    "GDI"(图象设备接口),它在Win32中的库名为:"GDI32.dll",要获得显示器的DC,所调用的API函数--CreateDC ( ),就被封装在此类库中。而要在C#中声明视窗的API函数需要使用.Net FrameWork SDK中的名字空间"System....

    winapi编程讲解

    c#与api类型对照表.docx C__win32_API编程讲解.doc c_调用win32的API函数--user32.dll.doc C_中调用Windows_API的要点.txt

    百度人脸识别离线SDKV1.1版封装动态库供C#调用

    本demo是x64的,封装成可供c#调用的dll是BaiduFaceDll.dll 使用步骤: 1.到百度AI开放平台 https://ai.baidu.com ,下载百度人脸离线SDK,(注意版本V1.1.0,修改日期:2018.08.31) 2.下载后,把sdk包里那个443 MB的...

    基于Visual C#的Windows API 程序设计

    GDI32.dll全称是Graphical Device Interface(图形设备接口),包含用于画图和显示文本的函数,比如要显示一个程序窗口,就调用了其中的函数来画这个窗口。下面就常用的鼠标、键盘以及窗体事件来介绍一下C#开放Windows...

    API精灵源码(C#编)

    //保存读取出来的C#调用代码 private ArrayList funmat = new ArrayList();//保存读取出来的C#对应函数 private ArrayList funwin9x = new ArrayList();//保存读取出来的WIN9X private ArrayList funwin2k ...

    C#屏蔽Windows快捷键及任务管理器

    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] //抽掉钩子 public static extern bool UnhookWindowsHookEx(int idHook); [DllImport("user32.dll")] ...

    C#实现控制电脑的注销、关机、重启

    使用C#,调用windows系统API函数user32.dll以及其他功能类实现电脑的注销、关机、重启

    C#如何在后台捕捉按键

    [DllImport("user32.dll")] public static extern UInt32 RegisterHotKey(IntPtr hWnd, UInt32 id, UInt32 fsModifiers, UInt32 vk); //API public Form1() { InitializeComponent(); RegisterHotKey(this....

    Ajax.Dll各个版本无刷新组件

    1.先把Ajax.dll添加引用到项目中,别告诉我不会,如果连这个也不会就太那个了,和添加其他DLL一样,在项目上右击,菜单上有个[添加引用],然后一步一步把那个.DLL文件添加进来,之后你会在项目的引用中看到那个Ajax....

    在C#中SendMessage和PostMessage的参数传递

    在C#中可以使用Window API提供的SendMessage和PostMessage来传递参数。两者的区别简单介绍下:返回值的不同,我们先看一下 MSDN 里的声明: LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM ...

    BurnsBac.WinApi:PInvoke系统调用的外部定义和托管包装。 涵盖了user32,kernel32,setupapi和hid(dll)

    CSharp项目,dotnet标准2.0库。 PInvoke系统调用的外部定义和托管包装。 涵盖了user32,kernel32,setupapi和hid(dll)。

Global site tag (gtag.js) - Google Analytics