c#hook WH_KEYBOARD不起作用

时间:2017-05-08 11:36:10

标签: c# delegates hook

我尝试了解.NET中的Windows挂钩。我想听听按键(全局)。我理解SetWindowsHooks的第一个和第二个参数是什么意思。第一个参数指定钩子的类型,例如2表示WH_KEYBOARD,第二个表示回调处理程序,例如如果事件发生,应该调用哪个函数。

如果我将最后一个参数设置为0,我可以拦截系统中所有线程的事件。

但为什么(以及如何)我必须指定第三个参数?我尝试以这种形式在我的控制台应用程序中挂钩WH_Keyboard(类型2):

boolean allSelected = true;  //Initially set it to true which indicates that all selected values are other than 0
for (int i = 0; i < set.length; i++) {

    JComboBox boxes = set[i];
    int index = boxes.getSelectedIndex();

    if (index == 0) {    
        allSelected = false;  //If index is 0, make it false
    }
} 

if(allSelected)
{
    System.out.println("Every combobox has selected something"); 
}
else
{
    System.out.println("Not every JcomboBox has something selected"); 
}

它不起作用。因为IntPtr.Zero在此上下文中无效。有人可以解释第三个参数的含义以及如何指定有效参数,以便我的控制台应用程序可以对(全局)WH_KEYBOARD事件做出反应吗?

提前致谢

0 个答案:

没有答案