我的要求是当用户在chrome中打开特定网址时获得按键。 为此,我首先检查在chrome中打开的URL,之后我使用下面的代码设置钩子
_hookID = SetHook(_proc);
Application.Run();
UnhookWindowsHookEx(_hookID);
它正在获取该URL上的密钥,但在此之后,如果我关闭该URL,它将不断获取密钥,这就是我不想要的。 这是因为我正在调用application.run()。如何在application.run()之后运行代码?我认为这将是解决方案
答案 0 :(得分:-2)
Aplication.Run
的调用在启动Windows消息循环时阻塞。一旦主窗口关闭和/或消息循环正在接收和处理将结束Windows程序的消息之一(例如WM_QUIT),该调用将返回
如果要在调用Run方法后运行代码,一个选项是在Application.Idle事件上注册处理程序
_hookID = SetHook(_proc);
Application.Idle += (s,e) => { UnhookWindowsHookEx(_hookID);};
Application.Run();
在我的测试中,引发了Idle事件,一旦调用了Run
方法,主消息循环就不会处理其他消息。
或者优雅地退出Windows循环,例如将WM_QUIT发布到其顶部窗口。