首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetWindowsHookEx c#

SetWindowsHookEx c#
EN

Stack Overflow用户
提问于 2020-08-18 18:51:47
回答 1查看 274关注 0票数 0

我想挂接一个特定的进程,而不是全局挂接,但我不知道在调用SetWindowsHookEx时必须放入什么。

我不明白什么是HookProc和第三个参数。

代码语言:javascript
复制
public Form1()
{
    InitializeComponent();
}
public enum HookType : int
        {
            WH_JOURNALRECORD = 0,
            WH_JOURNALPLAYBACK = 1,
            WH_KEYBOARD = 2,
            WH_GETMESSAGE = 3,
            WH_CALLWNDPROC = 4,
            WH_CBT = 5,
            WH_SYSMSGFILTER = 6,
            WH_MOUSE = 7,
            WH_HARDWARE = 8,
            WH_DEBUG = 9,
            WH_SHELL = 10,
            WH_FOREGROUNDIDLE = 11,
            WH_CALLWNDPROCRET = 12,
            WH_KEYBOARD_LL = 13,
            WH_MOUSE_LL = 14
        }
[DllImport("user32.dll", SetLastError = true)]                                   
static extern uint GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);

[DllImport("user32.dll", SetLastError = true)]                                  
static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 
      
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetWindowsHookEx(HookType hookType, HookProc lpfn, IntPtr hMod, uint dwThreadId);


[DllImport("user32.dll")]
static extern int CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);

delegate IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam);

public uint findWindowThreadId()
        {
            uint idprocess;
            idFirstGt = GetWindowThreadProcessId(FindWindow(default(string), "ProcessName"), IntPtr.Zero);
            return idProcess;
        }
public void SetHook()
        {
            hhook = SetWindowsHookEx(HookType.WH_KEYBOARD,/* HERE  , AND HERE */, findWindowThreadId());
        }

谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2020-10-07 01:14:27

HookProc是您希望在发生HookType时执行的回调函数(由您编写)。

第三个参数(IntPtr DLL)仅在您的HookProc驻留在另一个库(也称为DLL)中时才相关。如果在您的代码中定义了HookProc,那么您可以为第三个参数指定NULL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63467086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档