【问题标题】:c++ event loop in sub application in a dlldll中子应用程序中的c ++事件循环
【发布时间】:2013-10-22 06:14:57
【问题描述】:

早安,

我有以下问题: 我有一个将文本文件写入磁盘的 exe 应用程序,但该 exe 源不可用。 客户要求,当用户按下小键盘 5 时,会弹出一个新窗口,并对某些文件进行一些操作。

问题是,小键盘 5 + 新应用程序弹出窗口必须仅在应用程序正在运行并具有焦点时起作用(他们使用小键盘 5 进行其他操作)。

我想过这个

  1. 创建一个带有执行所需操作的表单和按钮的 dll
  2. 在进程中注入dll

但我很难理解是否有办法在 dll 中创建“按键循环”。

请注意,我是 c++ 和表单的初学者,但我只需要可行性检查和方向。

是否可以在注入的 dll 中创建一个等待按键的窗口应用程序? 有什么简单的例子吗?像疯子一样使用谷歌,我无法找到对此的参考,所以我认为我对正确的条款有疑问。

我的主要问题是 dllmain 显然是一次性例程,我不明白如何创建“事件循环”。

感谢您提供的任何信息。

【问题讨论】:

    标签: c++ dll code-injection event-loop


    【解决方案1】:

    如果您成功地在 traget 进程中注入了您的 DLL,请使用 DllMain 中的 _beginthread API 启动一个新线程,在该线程中您可以创建一个对话框并以通常的方式进行消息循环。

    【讨论】:

    • 我无法创建对话框。我所有的尝试都会导致一些荒谬的包含错误或其他错误。我创建了不同的其他项目并尝试将它们包括在内,但该尝试也失败了。我不知道从 dllmain 创建对话框/表单需要做什么。希望也有人可以帮助解决这个问题。
    • 您也可能忘记了注入的想法,并有一个单独的进程/应用程序监视激活旧版 EXE,必要时显示和隐藏您的弹出窗口。监控可以通过 Hooking API 完成。 msdn.microsoft.com/en-us/library/windows/desktop/ms632589.aspxmsdn.microsoft.com/en-us/library/windows/desktop/ms644991.aspx真的要走“注入”路线吗?
    • 感谢您的建议
    • 感谢您接受答案。如果您在挂钩方面需要帮助,请在此处评论。
    猜你喜欢
    • 2014-09-21
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2011-01-27
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    相关资源
    最近更新 更多