【问题标题】:Run Next line after application.Run()在 application.Run() 之后运行下一行
【发布时间】:2018-02-02 19:04:18
【问题描述】:

我的要求是当用户在 chrome 中打开特定 URL 时按下按键。 为此,我首先检查在 chrome 中打开的 URL,然后使用下面的代码设置挂钩

    _hookID = SetHook(_proc);
    Application.Run();
    UnhookWindowsHookEx(_hookID);

它正在获取该 URL 上的密钥,但之后如果我关闭该 URL,它会不断获取密钥,这就是我不想要的。 这是因为我正在调用 application.run()。如何在 application.run() 之后运行代码?我认为这将是解决方案

【问题讨论】:

    标签: c# console-application keylogger


    【解决方案1】:

    Aplication.Run 的调用在启动 Windows 消息循环时被阻塞。一旦主窗口关闭和/或将结束 Windows 程序的消息之一(例如WM_QUIT)被消息循环接收和处理,该调用将返回

    如果您想在调用 Run 方法后运行代码,一种选择是在 Application.Idle 事件上注册一个处理程序

    _hookID = SetHook(_proc);
    Application.Idle += (s,e) => { UnhookWindowsHookEx(_hookID);};
    Application.Run();
    

    在我的测试中,一旦调用 Run 方法,就会引发 Idle 事件,主消息循环不会处理任何其他消息。

    或者优雅地退出您的 windows 循环,例如通过将 WM_QUIT 发布到其顶部窗口。

    【讨论】:

    • 嘿 Rene,它所做的是当我打开 secipic URL 时它只绑定一次键盘记录器事件,所以当我按下该 URL 上的第二个键时它不起作用但我想捕获整个词
    • 我已将其更改为整个单词,它正在捕获整个单词,一切都很好,请您参考下次打开 URL 时使用的内容,它将捕获相同的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多