惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog
WordPress大学
WordPress大学
Jina AI
Jina AI
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
N
Netflix TechBlog - Medium
腾讯CDC
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
月光博客
月光博客
博客园 - Franky
Y
Y Combinator Blog
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
雷峰网
雷峰网
小众软件
小众软件
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 强悍的抽屉

基于 Dapper 的一个 DbUtils WebAPI 操作返回 c#版 mqtt 3.1.1 client 实现 mqtt 协议之 PINGREQ, PINGRESP httpWebRequest 文件下载 一个 go 文件服务器 ssdb MongoDB 刷新几次就报错 回车跳转控件焦点 让程序只启动一次 -- Mutex C# 排序 WINDEF.h 变量类型 SqlHelper 数据库操作类2 SqlHelper 数据库操作类 第一个 Windows 应用程序 JavaScript 字符串处理函数 - 强悍的抽屉 - 博客园 JavaScript 字符串函数扩充 - 强悍的抽屉 - 博客园 C# 字符串处理一些方法 希望找人一起写个 Ajax 的封装 几种流行的JS框架的选择
C# Win32API - 强悍的抽屉 - 博客园
强悍的抽屉 · 2010-03-27 · via 博客园 - 强悍的抽屉

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
}