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函数 //////该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。hWnd:设备上下文环境被检索的窗口的句柄 /// [DllImport("user32.dll",CharSet=CharSet.Auto)] publicstaticexternIntPtrGetDC(IntPtrhWnd); //////函数释放设备上下文环境(DC)供其他应用程序使用。 /// publicstaticexternintReleaseDC(IntPtrhWnd,IntPtrhDC); //////该函数返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。 /// staticpublicexternIntPtrGetDesktopWindow(); //////该函数设置指定窗口的显示状态。 /// staticpublicexternboolShowWindow(IntPtrhWnd,shortState); //////通过发送重绘消息WM_PAINT给目标窗体来更新目标窗体客户区的无效区域。 /// staticpublicexternboolUpdateWindow(IntPtrhWnd); //////该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。 /// staticpublicexternboolSetForegroundWindow(IntPtrhWnd); //////该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。 /// staticpublicexternboolSetWindowPos(IntPtrhWnd,IntPtrhWndInsertAfter,intx,inty,intWidth,intHeight,uintflags); //////打开剪切板 /// staticpublicexternboolOpenClipboard(IntPtrhWndNewOwner); //////关闭剪切板 /// staticpublicexternboolCloseClipboard(); //////打开清空 staticpublicexternboolEmptyClipboard(); //////将存放有数据的内存块放入剪切板的资源管理中 /// staticpublicexternIntPtrSetClipboardData(uintFormat,IntPtrhData); //////在一个矩形中装载指定菜单条目的屏幕坐标信息 /// staticpublicexternboolGetMenuItemRect(IntPtrhWnd,IntPtrhMenu,uintItem,refRECTrc); [DllImport("user32.dll",ExactSpelling=true,CharSet=CharSet.Auto)] //////该函数获得一个指定子窗口的父窗口句柄。 /// publicstaticexternIntPtrGetParent(IntPtrhWnd); //////该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。 /// ///其窗口程序将接收消息的窗口的句柄 /// 指定被发送的消息 /// 指定附加的消息指定信息 /// 指定附加的消息指定信息 /// 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); /// ///该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里 /// 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); //////该函数对指定的窗口设置键盘焦点。 /// publicstaticexternIntPtrSetFocus(IntPtrhWnd); //////该函数在指定的矩形里写入格式化文本,根据指定的方法对文本格式化(扩展的制表符,字符对齐、折行等)。 /// publicexternstaticintDrawText(IntPtrhdc,stringlpString,intnCount,refRECTlpRect,intuFormat); //////该函数改变指定子窗口的父窗口。 /// publicexternstaticIntPtrSetParent(IntPtrhChild,IntPtrhParent); //////获取对话框中子窗口控件的句柄 /// publicexternstaticIntPtrGetDlgItem(IntPtrhDlg,intnControlID); //////该函数获取窗口客户区的坐标。 /// publicexternstaticintGetClientRect(IntPtrhWnd,refRECTrc); //////该函数向指定的窗体添加一个矩形,然后窗口客户区域的这一部分将被重新绘制。 /// publicexternstaticintInvalidateRect(IntPtrhWnd,IntPtrrect,intbErase); //////该函数产生对其他线程的控制,如果一个线程没有其他消息在其消息队列里。 /// publicstaticexternboolWaitMessage(); //////该函数为一个消息检查线程消息队列,并将该消息(如果存在)放于指定的结构。 /// publicstaticexternboolPeekMessage(refMSGmsg,inthWnd,uintwFilterMin,uintwFilterMax,uintwFlag); //////该函数从调用线程的消息队列里取得一个消息并将其放于指定的结构。此函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息。此函数接收一定范围的消息值。 /// publicstaticexternboolGetMessage(refMSGmsg,inthWnd,uintwFilterMin,uintwFilterMax); //////该函数将虚拟键消息转换为字符消息。 /// publicstaticexternboolTranslateMessage(refMSGmsg); //////该函数调度一个消息给窗口程序。 /// publicstaticexternboolDispatchMessage(refMSGmsg); //////该函数从一个与应用事例相关的可执行文件(EXE文件)中载入指定的光标资源. /// publicstaticexternIntPtrLoadCursor(IntPtrhInstance,uintcursor); //////该函数确定光标的形状。 /// publicstaticexternIntPtrSetCursor(IntPtrhCursor); //////确定当前焦点位于哪个控件上。 /// publicstaticexternIntPtrGetFocus(); //////该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中。 /// publicstaticexternboolReleaseCapture(); //////准备指定的窗口来重绘并将绘画相关的信息放到一个PAINTSTRUCT结构中。 /// publicstaticexternIntPtrBeginPaint(IntPtrhWnd,refPAINTSTRUCTps); //////标记指定窗口的绘画过程结束,每次调用BeginPaint函数之后被请求 /// publicstaticexternboolEndPaint(IntPtrhWnd,refPAINTSTRUCTps); //////半透明窗体 /// publicstaticexternboolUpdateLayeredWindow(IntPtrhwnd,IntPtrhdcDst,refPOINTpptDst,refSIZEpsize,IntPtrhdcSrc,refPOINTpprSrc,Int32crKey,refBLENDFUNCTIONpblend,Int32dwFlags); //////该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。 /// publicstaticexternboolGetWindowRect(IntPtrhWnd,refRECTrect); //////该函数将指定点的用户坐标转换成屏幕坐标。 /// publicstaticexternboolClientToScreen(IntPtrhWnd,refPOINTpt); //////当在指定时间内鼠标指针离开或盘旋在一个窗口上时,此函数寄送消息。 /// publicstaticexternboolTrackMouseEvent(refTRACKMOUSEEVENTStme); ////// /// publicstaticexternboolSetWindowRgn(IntPtrhWnd,IntPtrhRgn,boolredraw); //////该函数检取指定虚拟键的状态。 /// publicstaticexternushortGetKeyState(intvirtKey); //////该函数改变指定窗口的位置和尺寸。对于顶层窗口,位置和尺寸是相对于屏幕的左上角的:对于子窗口,位置和尺寸是相对于父窗口客户区的左上角坐标的。 /// publicstaticexternboolMoveWindow(IntPtrhWnd,intx,inty,intwidth,intheight,boolrepaint); //////该函数获得指定窗口所属的类的类名。 /// publicstaticexternintGetClassName(IntPtrhWnd,outSTRINGBUFFERClassName,intnMaxCount); //////该函数改变指定窗口的属性 /// publicstaticexternintSetWindowLong(IntPtrhWnd,intnIndex,intdwNewLong); //////该函数检索指定窗口客户区域或整个屏幕的显示设备上下文环境的句柄,在随后的GDI函数中可以使用该句柄在设备上下文环境中绘图。 /// publicstaticexternIntPtrGetDCEx(IntPtrhWnd,IntPtrhRegion,uintflags); //////获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景返回值Long。 /// publicstaticexternIntPtrGetWindowDC(IntPtrhWnd); //////该函数用指定的画刷填充矩形,此函数包括矩形的左上边界,但不包括矩形的右下边界。 /// publicstaticexternintFillRect(IntPtrhDC,refRECTrect,IntPtrhBrush); //////该函数返回指定窗口的显示状态以及被恢复的、最大化的和最小化的窗口位置。 /// publicstaticexternintGetWindowPlacement(IntPtrhWnd,refWINDOWPLACEMENTwp); //////该函数改变指定窗口的标题栏的文本内容 /// publicstaticexternintSetWindowText(IntPtrhWnd,stringtext); //////该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控制,则拷贝控制的文本。 /// publicstaticexternintGetWindowText(IntPtrhWnd,outSTRINGBUFFERtext,intmaxCount); //////用于得到被定义的系统数据或者系统配置信息. /// staticpublicexternintGetSystemMetrics(intnIndex); //////该函数设置滚动条参数,包括滚动位置的最大值和最小值,页面大小,滚动按钮的位置。 /// staticpublicexternintSetScrollInfo(IntPtrhwnd,intbar,refSCROLLINFOsi,intfRedraw); //////该函数显示或隐藏所指定的滚动条。 /// publicstaticexternintShowScrollBar(IntPtrhWnd,intbar,intshow); //////该函数可以激活一个或两个滚动条箭头或是使其失效。 /// publicstaticexternintEnableScrollBar(IntPtrhWnd,uintflags,uintarrows); //////该函数将指定的窗口设置到Z序的顶部。 /// publicstaticexternintBringWindowToTop(IntPtrhWnd); //////该函数滚动指定窗体客户区域的目录。 /// staticpublicexternintScrollWindowEx(IntPtrhWnd,intdx,intdy,refRECTrcScroll,refRECTrcClip,IntPtrUpdateRegion,refRECTrcInvalidated,uintflags); //////该函数确定给定的窗口句柄是否识别一个已存在的窗口。 /// publicstaticexternintIsWindow(IntPtrhWnd); //////该函数将256个虚拟键的状态拷贝到指定的缓冲区中。 /// publicstaticexternintGetKeyboardState(byte[]pbKeyState); //////该函数将指定的虚拟键码和键盘状态翻译为相应的字符或字符串。该函数使用由给定的键盘布局句柄标识的物理键盘布局和输入语言来翻译代码。 /// publicstaticexternintToAscii(intuVirtKey,intuScanCode,byte[]lpbKeyState,byte[]lpwTransKey,intfuState); #endregion } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。