我尝试了解.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事件做出反应吗?
提前致谢