C# Win32API

简介:

public class Win32API
{
#region ==== Kernel32.dll ====

/// <summary>
/// 取得当前线程ID
/// </summary>
/// <returns></returns>
[DllImport( " kernel32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern uint GetCurrentThreadId();

[DllImport( " kernel32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr CreateFile(
string lpFileName,
FileAccess dwDesiredAccess,
FileShare dwShareMode,
int lpSecurityAttributes,
FileMode dwCreationDisposition,
int dwFlagsAndAttributes,
IntPtr hTemplateFile);

/// <summary>
/// 打开进程
/// </summary>
/// <param name="dwDesiredAccess"> 想得到的访问权限 </param>
/// <param name="bInheritHandle"> 指定返回的句柄是否可以被继承 </param>
/// <param name="dwProcessId"> 指定要打开的进程的ID </param>
/// <returns></returns>
[DllImport( " kernel32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr OpenProcess(DesiredAccess dwDesiredAccess, bool bInheritHandle, uint dwProcessId);

/// <summary>
/// 结束其它进程
/// </summary>
/// <param name="hProcess"></param>
/// <param name="uExitCode"></param>
/// <returns></returns>
[DllImport( " kernel32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);

/// <summary>
///
/// </summary>
/// <param name="hProcess"></param>
/// <param name="lpBaseAddress"></param>
/// <param name="lpBuffer"></param>
/// <param name="nSize"></param>
/// <param name="lpNumberOfBytesRead"></param>
/// <returns></returns>
[DllImport( " kernel32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, uint nSize, out uint lpNumberOfBytesRead);

/// <summary>
///
/// </summary>
/// <param name="dwFlags"></param>
/// <param name="th32ProcessID"></param>
/// <returns></returns>
[DllImport( " kernel32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr CreateToolhelp32Snapshot( uint dwFlags, uint th32ProcessID);


// [DllImport("kernel32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
// public static extern bool Process32First(IntPtr hSnapshot, LPPROCESSENTRY32W lppe);

#endregion

#region ==== User32.dll ====

/// <summary>
/// 继续下一个钩子
/// </summary>
/// <param name="hhk"></param>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
[DllImport( " user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);

/// <summary>
/// 获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。
/// </summary>
/// <param name="lpClassName"> 指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobafAddAtom函数产生的全局成员。该成员为16位,必须位于IpClassName的低 16位,高位必须为 0。 </param>
/// <param name="lpWindowName"> 指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配。 </param>
/// <returns> 如果函数成功,返回值为具有指定类名和窗口名的窗口句柄;如果函数失败,返回值为NULL </returns>
[DllImport( " user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr FindWindow( string lpClassName, string lpWindowName);

/// <summary>
/// 检取表示键名的字符串
/// </summary>
/// <param name="lParam"></param>
/// <param name="lpBuffer"></param>
/// <param name="nSize"></param>
/// <returns></returns>
[DllImport( " user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int GetKeyNameText(IntPtr lParam, string lpBuffer, int nSize);

/// <summary>
///
/// </summary>
/// <param name="hWnd"> 收消息的窗口的句柄 </param>
/// <param name="Msg"> 指定被发送的消息 </param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
[DllImport( " user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern long SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

/// <summary>
/// 改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。
/// </summary>
/// <param name="hWnd"> 窗口句柄 </param>
/// <param name="hWndInsertAfter"> 在z序中的位于被置位的窗口前的窗口句柄 </param>
/// <param name="X"> 以客户坐标指定窗口新位置的左边界 </param>
/// <param name="Y"> 以客户坐标指定窗口新位置的顶边界 </param>
/// <param name="cx"> 以像素指定窗口的新的宽度 </param>
/// <param name="cy"> 以像素指定窗口的新的高度 </param>
/// <param name="uFlags"> 窗口尺寸和定位的标志 </param>
/// <returns></returns>
[DllImport( " user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, SWP_Flags uFlags);

/// <summary>
/// 安装钩子
/// </summary>
/// <param name="idHook"> 钩子类型 </param>
/// <param name="lpfn"> 钩子函数的地址 </param>
/// <param name="hMod"> 钩子函数所在DLL的实例名柄. 如果一个局部的钩子, 该参数的值为 NULL </param>
/// <param name="dwThreadId"> 要安装钩子的线程, 0 为全局钩子 </param>
/// <returns> 钩子句柄 </returns>
[DllImport( " user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr SetWindowsHookEx(WH_Codes idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId);

/// <summary>
/// 卸载钩子
/// </summary>
/// <param name="hhk"> 要卸载的钩子的句柄 </param>
/// <returns></returns>
[DllImport( " user32.dll ", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(IntPtr hhk);

#endregion

#region ==== 文件系统 ====

#region ==== 磁盘和驱动器管理类 API ===

#endregion

#endregion
}



本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/archive/2010/04/27/1722030.html,如需转载请自行联系原作者
相关文章
|
13天前
|
JSON 文字识别 算法
C# 通过阿里云 API 实现企业营业执照OCR识别
C# 通过阿里云 API 实现企业营业执照OCR识别
|
13天前
|
JSON API C#
C# 通过阿里云 API 实现企业工商数据查询
C# 通过阿里云 API 实现企业工商数据查询
|
5月前
|
API C#
C# 调用系统“API“设置图片为“桌面壁纸“
C# 调用系统“API“设置图片为“桌面壁纸“
|
7月前
|
Oracle 关系型数据库 API
C# LIS检验系统源码,接口技术:RESTful API + Http+WCF
LIS检验系统一种专门用于医院化验室的计算机系统,它致力于提高医院化验室的工作效率和检测准确率。LIS系统由多个子系统组成,包括样本管理系统、质控系统、检验结果管理系统、报告管理系统等。体系结构:Client/Server架构 SaaS模式 客户端:WPF+Windows Forms 服务端:C# +.Net 数据库:Oracle 接口技术:RESTful API + Http+WCF
|
API C# Windows
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
本篇主要介绍一些与窗口句柄相关的一些API,比如设置窗口状态、当前激活的窗口、窗口客户区的大小、鼠标位置、禁用控件等,以及介绍Winform中的句柄属性,便于直接获取控件或窗体句柄,以及不推荐...
1917 0
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
|
开发框架 JSON 前端开发
【C#】.net core2.1,自定义全局类对API接口和视图页面产生的异常统一处理
在开发一个网站项目时,异常处理和过滤功能是最基础的模块 本篇文章就来讲讲,如何自定义全局异常类来统一处理
210 0
|
JavaScript 前端开发 API
C#编程学习(06):使用百度API进行路径规划
C#编程学习(06):使用百度API进行路径规划
C#编程学习(06):使用百度API进行路径规划
|
存储 Kubernetes 负载均衡
C#开源一个基于yarp的API网关Demo 支持绑定Kubernete s Service
C#开源一个基于yarp的API网关Demo 支持绑定Kubernete s Service
567 0
C#开源一个基于yarp的API网关Demo 支持绑定Kubernete s Service
|
API 开发者 C#
带你读《More Effective C#:改善C#代码的50个有效方法》之二:API设计
本书围绕一些关于C#和.NET的重要主题,包括C#语言元素、.NET资源管理、使用C#表达设计、创建二进制组件和使用框架等,讲述了最常见的50个问题的解决方案,为程序员提供了改善C#和.NET程序的方法。本书通过将每个条款构建在之前的条款之上,并合理地利用之前的条款,来让读者最大限度地学习书中的内容,为其在不同情况下使用最佳构造提供指导,适合各层次的C#程序员阅读。