C#调用USER32.DLL的API函数
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;namespace WindowsAPI{class CSharp_Win32Api{#region User32.dll 函数/// <summary>/// 该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。hWnd:设备上下文环境被检索的窗口的句柄/// </summary>[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern IntPtr GetDC(IntPtr hWnd);/// <summary>/// 函数释放设备上下文环境(DC)供其他应用程序使用。/// </summary>public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);/// <summary>/// 该函数返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。/// </summary>static public extern IntPtr GetDesktopWindow();/// <summary>/// 该函数设置指定窗口的显示状态。/// </summary>static public extern bool ShowWindow(IntPtr hWnd, short State);/// <summary>/// 通过发送重绘消息 WM_PAINT 给目标窗体来更新目标窗体客户区的无效区域。/// </summary>static public extern bool UpdateWindow(IntPtr hWnd);/// <summary>/// 该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。/// </summary>static public extern bool SetForegroundWindow(IntPtr hWnd);/// <summary>/// 该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。/// </summary>static public extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int Width, int Height, uint flags);/// <summary>/// 打开剪切板/// </summary>static public extern bool OpenClipboard(IntPtr hWndNewOwner);/// <summary>/// 关闭剪切板/// </summary>static public extern bool CloseClipboard();/// <summary>/// 打开清空</summary>static public extern bool EmptyClipboard();/// <summary>/// 将存放有数据的内存块放入剪切板的资源管理中/// </summary>static public extern IntPtr SetClipboardData(uint Format, IntPtr hData);/// <summary>/// 在一个矩形中装载指定菜单条目的屏幕坐标信息 /// </summary>static public extern bool GetMenuItemRect(IntPtr hWnd, IntPtr hMenu, uint Item, ref RECT rc);[DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]/// <summary>/// 该函数获得一个指定子窗口的父窗口句柄。/// </summary>public static extern IntPtr GetParent(IntPtr hWnd);/// <summary>/// 该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。 /// </summary>/// <param name="hWnd">其窗口程序将接收消息的窗口的句柄</param>/// <param name="msg">指定被发送的消息</param>/// <param name="wParam">指定附加的消息指定信息</param>/// <param name="lParam">指定附加的消息指定信息</param>/// <returns></returns>public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam); public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref RECT lParam);public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref POINT lParam); public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref TBBUTTON lParam); public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref TBBUTTONINFO lParam); public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref REBARBANDINFO lParam); public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref TVITEM lParam); public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref LVITEM lParam); public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref HDITEM lParam); public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref HD_HITTESTINFO hti); /// <summary>/// 该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里/// </summary>public static extern IntPtr PostMessage(IntPtr hWnd, int msg, int wParam, int lParam);public static extern IntPtr SetWindowsHookEx(int hookid, HookProc pfnhook, IntPtr hinst, int threadid);[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]public static extern bool UnhookWindowsHookEx(IntPtr hhook);[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]public static extern IntPtr CallNextHookEx(IntPtr hhook, int code, IntPtr wparam, IntPtr lparam);/// <summary>/// 该函数对指定的窗口设置键盘焦点。/// </summary>public static extern IntPtr SetFocus(IntPtr hWnd);/// <summary>/// 该函数在指定的矩形里写入格式化文本,根据指定的方法对文本格式化(扩展的制表符,字符对齐、折行等)。/// </summary>public extern static int DrawText(IntPtr hdc, string lpString, int nCount, ref RECT lpRect, int uFormat);/// <summary>/// 该函数改变指定子窗口的父窗口。/// </summary>public extern static IntPtr SetParent(IntPtr hChild, IntPtr hParent);/// <summary>/// 获取对话框中子窗口控件的句柄/// </summary>public extern static IntPtr GetDlgItem(IntPtr hDlg, int nControlID);/// <summary>/// 该函数获取窗口客户区的坐标。/// </summary>public extern static int GetClientRect(IntPtr hWnd, ref RECT rc);/// <summary>/// 该函数向指定的窗体添加一个矩形,然后窗口客户区域的这一部分将被重新绘制。/// </summary>public extern static int InvalidateRect(IntPtr hWnd, IntPtr rect, int bErase);/// <summary>/// 该函数产生对其他线程的控制,如果一个线程没有其他消息在其消息队列里。/// </summary>public static extern bool WaitMessage();/// <summary>/// 该函数为一个消息检查线程消息队列,并将该消息(如果存在)放于指定的结构。/// </summary>public static extern bool PeekMessage(ref MSG msg, int hWnd, uint wFilterMin, uint wFilterMax, uint wFlag);/// <summary>/// 该函数从调用线程的消息队列里取得一个消息并将其放于指定的结构。此函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息。此函数接收一定范围的消息值。/// </summary>public static extern bool GetMessage(ref MSG msg, int hWnd, uint wFilterMin, uint wFilterMax);/// <summary>/// 该函数将虚拟键消息转换为字符消息。/// </summary>public static extern bool TranslateMessage(ref MSG msg);/// <summary>/// 该函数调度一个消息给窗口程序。/// </summary>public static extern bool DispatchMessage(ref MSG msg);/// <summary>/// 该函数从一个与应用事例相关的可执行文件(EXE文件)中载入指定的光标资源./// </summary>public static extern IntPtr LoadCursor(IntPtr hInstance, uint cursor);/// <summary>/// 该函数确定光标的形状。/// </summary>public static extern IntPtr SetCursor(IntPtr hCursor);/// <summary>/// 确定当前焦点位于哪个控件上。/// </summary>public static extern IntPtr GetFocus();/// <summary>/// 该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中。/// </summary>public static extern bool ReleaseCapture();/// <summary>/// 准备指定的窗口来重绘并将绘画相关的信息放到一个PAINTSTRUCT结构中。/// </summary>public static extern IntPtr BeginPaint(IntPtr hWnd, ref PAINTSTRUCT ps);/// <summary>/// 标记指定窗口的绘画过程结束,每次调用BeginPaint函数之后被请求/// </summary>public static extern bool EndPaint(IntPtr hWnd, ref PAINTSTRUCT ps);/// <summary>/// 半透明窗体/// </summary>public static extern bool UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref POINT pptDst, ref SIZE psize, IntPtr hdcSrc, ref POINT pprSrc, Int32 crKey, ref BLENDFUNCTION pblend, Int32 dwFlags);/// <summary>/// 该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。/// </summary>public static extern bool GetWindowRect(IntPtr hWnd, ref RECT rect);/// <summary>/// 该函数将指定点的用户坐标转换成屏幕坐标。/// </summary>public static extern bool ClientToScreen(IntPtr hWnd, ref POINT pt);/// <summary>/// 当在指定时间内鼠标指针离开或盘旋在一个窗口上时,此函数寄送消息。/// </summary>public static extern bool TrackMouseEvent(ref TRACKMOUSEEVENTS tme);/// <summary>/// /// </summary>public static extern bool SetWindowRgn(IntPtr hWnd, IntPtr hRgn, bool redraw);/// <summary>/// 该函数检取指定虚拟键的状态。/// </summary>public static extern ushort GetKeyState(int virtKey);/// <summary>/// 该函数改变指定窗口的位置和尺寸。对于顶层窗口,位置和尺寸是相对于屏幕的左上角的:对于子窗口,位置和尺寸是相对于父窗口客户区的左上角坐标的。/// </summary>public static extern bool MoveWindow(IntPtr hWnd, int x, int y, int width, int height, bool repaint);/// <summary>/// 该函数获得指定窗口所属的类的类名。/// </summary>public static extern int GetClassName(IntPtr hWnd, out STRINGBUFFER ClassName, int nMaxCount);/// <summary>/// 该函数改变指定窗口的属性/// </summary>public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);/// <summary>/// 该函数检索指定窗口客户区域或整个屏幕的显示设备上下文环境的句柄,在随后的GDI函数中可以使用该句柄在设备上下文环境中绘图。/// </summary>public static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hRegion, uint flags);/// <summary>/// 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景 返回值 Long。/// </summary>public static extern IntPtr GetWindowDC(IntPtr hWnd);/// <summary>/// 该函数用指定的画刷填充矩形,此函数包括矩形的左上边界,但不包括矩形的右下边界。/// </summary>public static extern int FillRect(IntPtr hDC, ref RECT rect, IntPtr hBrush);/// <summary>/// 该函数返回指定窗口的显示状态以及被恢复的、最大化的和最小化的窗口位置。/// </summary>public static extern int GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT wp);/// <summary>/// 该函数改变指定窗口的标题栏的文本内容/// </summary>public static extern int SetWindowText(IntPtr hWnd, string text);/// <summary>/// 该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控制,则拷贝控制的文本。/// </summary>public static extern int GetWindowText(IntPtr hWnd, out STRINGBUFFER text, int maxCount);/// <summary>/// 用于得到被定义的系统数据或者系统配置信息./// </summary>static public extern int GetSystemMetrics(int nIndex);/// <summary>/// 该函数设置滚动条参数,包括滚动位置的最大值和最小值,页面大小,滚动按钮的位置。/// </summary>static public extern int SetScrollInfo(IntPtr hwnd, int bar, ref SCROLLINFO si, int fRedraw);/// <summary>/// 该函数显示或隐藏所指定的滚动条。/// </summary>public static extern int ShowScrollBar(IntPtr hWnd, int bar, int show);/// <summary>/// 该函数可以激活一个或两个滚动条箭头或是使其失效。/// </summary>public static extern int EnableScrollBar(IntPtr hWnd, uint flags, uint arrows);/// <summary>/// 该函数将指定的窗口设置到Z序的顶部。/// </summary>public static extern int BringWindowToTop(IntPtr hWnd);/// <summary>/// 该函数滚动指定窗体客户区域的目录。/// </summary>static public extern int ScrollWindowEx(IntPtr hWnd, int dx, int dy,ref RECT rcScroll, ref RECT rcClip, IntPtr UpdateRegion, ref RECT rcInvalidated, uint flags);/// <summary>/// 该函数确定给定的窗口句柄是否识别一个已存在的窗口。/// </summary>public static extern int IsWindow(IntPtr hWnd);/// <summary>/// 该函数将256个虚拟键的状态拷贝到指定的缓冲区中。/// </summary>public static extern int GetKeyboardState(byte[] pbKeyState);/// <summary>/// 该函数将指定的虚拟键码和键盘状态翻译为相应的字符或字符串。该函数使用由给定的键盘布局句柄标识的物理键盘布局和输入语言来翻译代码。/// </summary>public static extern int ToAscii(int uVirtKey,int uScanCode, byte[] lpbKeyState, byte[] lpwTransKey,int fuState);#endregion}}
来源:https://blog.csdn.net/qq_30122639/article/details/61620211
C#调用USER32.DLL的API函数相关推荐
- 10.4.4 使用ctypes调用kernel32.dll中的函数
10.4.4 使用ctypes调用kernel32.dll中的函数 2007-10-17 14:41 孙广磊 人民邮电出版社 字号:T | T 综合评级: 想读(5) 在读(0) 已读(6) ...
- 嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数
作为在中断中调用FreeRTOS系统的API函数的参考,disp_str()是显示屏的显示函数会将传入的字符串进行显示. void TIM5_Int_Init(u16 arr,u16 psc) {TI ...
- 调用外部 DLL 中的函数(显示调用)
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Di ...
- C#中调用API函数RegisterHotKey注册多个系统热键
转自:http://www.kkee.cn/article.asp?id=84要设置快捷键必须使用user32.dll下面的两个方法. BOOL RegisterHotKey( //注册系统热键的AP ...
- 在C#中调用windows API函数
Api函数是构筑Windws应用程序的基石,每一种Windows应用程序开发工具,它提供的底层函数都间接或直接地调用了Windows API函数,同时为了实现功能扩展,一般也都提供了调用Windows ...
- c#调用win32 API函数修改系统时间
一般来说,系统时间的修改可以通过win32 API函数库中的SetLocalTime函数进行设置.对于C#语言来说,虽然win32 API大部分函数都已经封装在了.NET Framework类库中,但 ...
- Windows2000下Api函数的拦截分析
Windows2000下Api函数的拦截分析 来源:网络 作者: 查看:[大字体 中字体 小字体] 编辑:napl 简介: Api拦截并不是一个新的技术,很多商业软件都采用这种技术.对windows的 ...
- c语言win api函数,Win2K下的Api函数的拦截
这么多高手在这里,哎,小弟愿意向各位高手学习. Api拦截并不是一个新的技术,很多商业软件都采用这种技术.对windows的Api函数的拦截,不外乎两种方法,第一种是Mr. Jeffrey Richt ...
- 补——HOOK API函数
HOOKAPI的意思就是,给系统函数API挂钩,让系统调用API的时候,先执行我们自己设定的程序,之后再决定是不是执行具体的API函数的功能. HOOK API的原理: 如下图: 至于是否执行完整AP ...
最新文章
- bat 将war文件转换成ear文件
- tabcontainer控件太长_AjaxControlToolKit--TabContainer控件的介绍收藏[摘录]
- python代码实现插入排序
- Yann LeCun 最新发声:自监督+世界模型,让 AI 像人类与一样学习与推理
- python多线程代码_Python多线程代码求改错
- PHP读取远程文件并保存
- 2 什么是计算机网络设置密码,计算机网络技术及应用(第2版)第6章网络操作系统基本配置.ppt...
- [导入]VB PE导出/输入表演示(读文件版)
- 4-2 父子组件的数据传递
- Win-MASM64汇编语言-CMP/CMPSB/CMPSW/CMPSD/JNE/JCXZ
- 微博每日数十亿级业务下的计数器如何扩展Redis?
- instantDrag for Maya脚本 (移动模型时沿目标模型移动)
- Volterra方程的不动点
- Gephi简单导入数据
- 为什么程序员容易猝死
- 爬虫问题,内容应该如何解码,base64解码技巧,从哪里开始分析
- 数据分析基础:数据可视化+数据分析报告(Python实现)
- C++ 模板进阶(模板的特化)
- P1413 坚果保龄球洛谷c++题解
- 关于C语言和java变量赋值问题