SetWindowsHookEx c#

如何解决SetWindowsHookEx c#

我想钩住一个特定的进程而不是全局钩子,但是我不知道在调用它时必须在SetwindowsHookEx中放入什么。

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

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 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());
        }

谢谢!

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?