[assembly: AssemblyVersion("1.0.0.3")]

代码

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
}

转载于:https://www.cnblogs.com/linsongbin/archive/2010/03/27/1698364.html

C# Win32API相关推荐

  1. 一个鼠标类( Using C# and Win32API)

    作者:网际浪子        出处:网络 namespace ClassLibrary.Hardware { // 原创 Using C# and Win32API ( 最近我把所有的Win32API ...

  2. C#使用WIN32API来高效率的遍历文件和目录(转)

    我们有时需要遍历某个目录下的文件和子目录,可以使用System.IO.DirectoryInfo.GetDirectories或 GetFiles来获得目录下的所有的文件和子目录,当这个目录下的内容比 ...

  3. python爬虫执行scrapy crawl demo出现: import win32api ModuleNotFoundError: No module named 'win32api'错误

    执行: >scrapy crawl demo 可能会出现这个错误: import win32api ModuleNotFoundError: No module named 'win32api' ...

  4. Win32API 窗口程序的创建7大步骤

    Win32API 窗口程序的创建7大步骤 1 定义WinMain入口函数 2 定义窗口处理函数 WindowsProc(用来处理消息.有如公司业务处理,具体干活的人.) 3 注册窗口类 Registe ...

  5. 引用安装好的pywin,出现“ModuleNotFoundError: No module named 'win32api'”提示

    第一步:pywin32 下载链接:https://sourceforge.net/projects/pywin32/ 在file菜单下找到符合自己安装版本,我是python3.7,win64 位,下载 ...

  6. pycharm安装scrapy失败_运行Scrapy程序时出现No module named win32api问题的解决思路和方法...

    有小伙伴在群里边反映说在使用Scrapy的时候,发现创建项目一切顺利,但是在执行Scrapy爬虫程序的时候却出现下列报错:"No module named win32api",如下 ...

  7. 俄罗斯方块:win32api开发

    本文简述一门课程,演示win32api开发俄罗斯方块的开发过程.如果学生学习过C语言,没学过或者学习C++不好,刚刚開始学习win32api程序设计,还不懂消息循环和注冊窗体类.   近期的照片在这里 ...

  8. ModuleNotFoundError: No module named 'win32api'

    当运行python的时候出现下面这个错误 ModuleNotFoundError: No module named 'win32api' 解决方法:安装pywin32即可 pip install py ...

  9. 成功解决import win32api, sys, osImportError: DLL load failed: 找不到指定的模块。

    成功解决import win32api, sys, os ImportError: DLL load failed: 找不到指定的模块. 目录 解决问题 解决思路 解决方法 解决问题 import w ...

  10. 成功解决Scrapy框架的问题ModuleNotFoundError: No module named 'win32api'

    成功解决Scrapy框架的问题ModuleNotFoundError: No module named 'win32api' 目录 解决问题 解决思路 解决方法 解决问题 ModuleNotFound ...

最新文章

  1. 如何优化Spring Cloud微服务注册中心架构?
  2. html5--1.15 style元素与HTML样式基础
  3. 矩阵分解(rank decomposition)文章代码汇总
  4. 去了家新公司,技术总监不让用 IntelliJ IDEA!!想离职了。。
  5. Android系统(244)---Zygote进程的启动流程
  6. java jxl写excel_java jxl 大量数据写入excel,比如上千万条
  7. PyTorch 入坑七:模块与nn.Module学习
  8. Futter基础第7篇: 实现底部导航
  9. 学习汇编语言 -王爽,自已完成的一道实试题 (1)
  10. BusHound详细使用说明
  11. linux下安装sqlite3
  12. 高仙商用清洁机器人落地北京环球影城,为室外清洁再添助力
  13. 外国程序员求助:快 40 了,不知道以后该怎么办
  14. knex入门学习使用方法
  15. 实用科普|推荐收藏:我的车,到底该选什么功率充电桩?
  16. SSO单点登录系统设计,数据库设计文档
  17. http 500错误 Java_HTTP状态 500 - 内部服务器错误
  18. 【整理】产品相关的一些英文简称
  19. 2018年c++达内从入门到精通全套教程
  20. 深度Linux Deepin系统安装教程使用体验

热门文章

  1. kafka 生产和消费信息入门
  2. 看雪 好文 汇集贴(持续更新)
  3. Linux开发_反编译开发_破解简单登录程序外加缓冲区溢出攻击
  4. 从0开始html前端页面开发_CSS实现图像获取鼠标焦点逐渐变大动画效果
  5. Java内存模型探秘
  6. 常用实例:js格式化手机号为3 4 4形式
  7. 《Thinking in Java》Ten 内部类
  8. 编译安装libmemcached库报错
  9. android文件操作和SDCard卡操作
  10. 利用shell脚本来监控linux系统的负载与CPU占用情况