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

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
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
}