C# 之 user32函数库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices; namespace WindowsAPI
{
/// <summary>
/// User32.dll 函数类
/// </summary>
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
}
}
C# 之 user32函数库的更多相关文章
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- ABP(现代ASP.NET样板开发框架)系列之21、ABP展现层——Javascript函数库
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之21.ABP展现层——Javascript函数库 ABP是“ASP.NET Boilerplate Project ...
- 重温JSP学习笔记--El函数库
EL函数库(由JSTL提供的) * 导入标签库:<%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/f ...
- 为开发者准备的 Android 函数库(2016 年版)
转载:http://www.androidchina.net/5922.html第三方函数库(译者注:包括第三方提供的 SDK,开源函数库)以惊人的方式助力着 Android 开发,借助这些其他开发人 ...
- 如何持续集成/交付一个开源.NET函数库到Nuget.org
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:这是一个简单的入门向导,涉及到GitHub.AppVeyor和Nuget.org. 最 ...
- ajax的使用:(ajaxReturn[ajax的返回方法]),(eval返回字符串);分页;第三方类(page.class.php)如何载入;自动加载函数库(functions);session如何防止跳过登录访问(构造函数说明)
一.ajax例子:ajaxReturn("ok","eval")->thinkphp中ajax的返回值的方法,返回参数为ok,返回类型为eval(字符串) ...
- PHP PDO函数库详解
PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高效.目前而言,实现“ ...
- PHP用mb_string函数库处理与windows相关中文字符
昨天想批处理以前下载的一堆文件,把文件里的关键内容用正则匹配出来,集中处理.在操作文件时遇到一个问题,就是windows操作系统中的编码问题. 我们都知道windows中(当然是中文版),文件名和文件 ...
- 【C++实现python字符串函数库】strip、lstrip、rstrip方法
[C++实现python字符串函数库]strip.lstrip.rstrip方法 这三个方法用于删除字符串首尾处指定的字符,默认删除空白符(包括'\n', '\r', '\t', ' '). s.st ...
随机推荐
- 转】Mahout分步式程序开发 基于物品的协同过滤ItemCF
原博文出自于: http://blog.fens.me/hadoop-mahout-mapreduce-itemcf/ 感谢! Posted: Oct 14, 2013 Tags: Hadoopite ...
- Spark生态系统BDAS
目前,Spark已经发展成为包含众多子项目的大数据计算平台. 伯克利将Spark的整个生态系统称为伯克利数据分析栈(BDAS). 其核心框架是Spark,同时BDAS涵盖支持结构化数据SQL查询与分析 ...
- c++面试题总结(1)
1.int a=5,则 ++(a++)的值是() A.5 B. 6 C.7 D.逻辑错误 a++返回的是一个临时变量,这里是右值,不能再前面++了 2.下面 ...
- 内存中的static、const实现形式
最近在考虑下半年找工作的事情,看了不少面试题目,其中还是蛮有收获的,把基础好好复习了一遍.比如这个题目,static.const现形式,static和const类型的变量在写程序的时候也写了很多,不过 ...
- UVALive 3956 Key Task (bfs+状态压缩)
Key Task 题目链接: http://acm.hust.edu.cn/vjudge/contest/129733#problem/D Description The Czech Technica ...
- Type Encoding
[Type Encodings] The compiler encodes the return and argument types for each method in a character s ...
- MSSQL 2005数据库可疑状态
今天早上打开进销存,提示链接失败,经过检查参数,网络.端口等各种情况,均没有发现问题,最后检查数据库本事的问题. 通过studio进去发现我的进销存数据变成了(可疑)状态,随机百度修复方法,修复方法还 ...
- MSSQL手札三 MSSQL存储过程
--存储过程完成一段sql代码的封装 create proc trim --参数列表,多个间用逗号分隔 ) as --自定义代码段 ) set @str1=LTRIM(RTRIM(@str)) pri ...
- HDU 1242 Rescue (BFS(广度优先搜索))
Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- CCF 201403-3 命令行选项 (STL模拟)
问题描述 请你写一个命令行分析程序,用以分析给定的命 令行里包含哪些选项.每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔.这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序 ...