C开发教程外挂(2)

来源:网络收集 时间:2025-06-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

public class KeyBoardHookStruct {

public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; }

#region DllImport //设置钩子

[DllImport("user32.dll",

CharSet

=

CharSet.Auto,

CallingConvention = CallingConvention.StdCall)]

public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); [DllImport("user32.dll",

CharSet

=

CharSet.Auto,

CallingConvention = CallingConvention.StdCall)] //抽掉钩子

public static extern bool UnhookWindowsHookEx(int idHook); [DllImport("user32.dll",

CharSet

=

CharSet.Auto,

CallingConvention = CallingConvention.StdCall)] //调用下一个钩子

public static extern int CallNextHookEx(int idHook, int nCode, IntPtr

wParam, IntPtr lParam); //取得模块句柄

[DllImport("kernel32.dll",

CharSet

=

CharSet.Auto,

CallingConvention = CallingConvention.StdCall)]

private static extern IntPtr GetModuleHandle(string lpModuleName);

//寻找目标进程窗口

[DllImport("USER32.DLL")]

public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); //设置进程窗口到最前

[DllImport("USER32.DLL")]

public static extern bool SetForegroundWindow(IntPtr hWnd); //模拟键盘事件

[DllImport("User32.dll")]

public static extern void keybd_event(Byte bVk, Byte bScan, Int32 dwFlags, Int32 dwExtraInfo);

//释放按键的常量

private const int KEYEVENTF_KEYUP =2;

本例所使用

的函数比较少,它们都在系统的USER32.dll里,包括:设置和取消钩子、调用下一个钩子、导入进程、模拟键盘等等。我们依次导入它们。

这些函数的命名规范合理,几乎只根据函数名就能知道其功能。

如果读者对于其中的某些函数不熟悉,请自行搜索MSDN。 二、使用Windows API设置钩子

有了以上windows API函数的声明,下一步就是设置钩子了。

寥寥两行代码,但包含了相当丰富的内容。 C#代码 1.//委托

2.public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);

3. 4. 5.

6.public void Hook_Start() 7. {

8. // 安装键盘钩子 9. if (hHook == 0) 10. {

11. KeyBoardHookProcedure = new HookProc(KeyBoardHookProc); 12.

13. hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure,

GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);

14. 15. } 16. } //委托

public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);

public void Hook_Start() {

// 安装键盘钩子 if (hHook == 0) {

KeyBoardHookProcedure = new HookProc(KeyBoardHookProc); hHook

=

SetWindowsHookEx(WH_KEYBOARD_LL,

KeyBoardHookProcedure,

GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0); } }

先介绍一下设置钩子的明星函数:SetWindowsHookEx 。它的参数说明如下。SetWindowsHookEx( idHook: Integer; {钩子类型} lpfn: TFNHookProc; {函数指针}

hmod: HINST; {包含钩子函数的模块(EXE、DLL)句柄; 一般是 HInstance; 如果是当前线程这里可以是 0}

dwThreadId: DWORD {关联的线程; 可用 GetCurrentThreadId 获取

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库C开发教程外挂(2)在线全文阅读。

C开发教程外挂(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/447384.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219