gpt4 book ai didi

c++ - 一个应用程序可以运行另一个应用程序的代码吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:38 24 4
gpt4 key购买 nike

嗨,

我对 C++ 和 WinAPI 比较陌生。到目前为止,我已经设法创建了一个应用程序,它使用 CreateProcess 函数和一个 STARTUPINFO 结构来创建一个新桌面,在该新桌面中启动一个新的 explorer.exe 进程并切换到它。

接下来,因为我希望能够随时在这两个桌面之间切换,只需按一个键(在我的例子中是 LCTRL),我制作了另一个使用 SetWindowsHookEx 函数为键盘创建一个全局钩子(Hook)。

因为 Hook 仅在调用 destkop 时处于事件状态,在第一个应用程序中,使用 CreateProcess,在创建 explorer.exe 进程并切换到新桌面之前,我已经启动了第二个应用程序的可执行文件两次:一次在当前桌面,一次在新桌面。

一切正常,我可以随时在桌面之间切换,但现在我被要求对启动的进程的结构做一些事情,不知何故,以节省时间应用程序代码在第一个内部运行,无需创建新进程。因为这是我的第一篇文章,所以我无法上传进程树的片段,但是来自 live.systernalsprocexp 应用程序显示以下结构:

---FirstApp.exe:
------------SecondApp.exe(原桌面)
------------explorer.exe(新桌面)
------------SecondApp.exe(新桌面)

所以基本上,我的问题是:我能否使挂接键盘的应用程序代码与 FirstApp 在同一线程中运行?这个实现,一个app启动这三个进程,第二个app钩住键盘,是我的主意(我没有被要求这样做,我只是被要求创建一个新桌面并在它们之间切换),所以我也乐于接受关于更好地解决这个问题的建议。

最佳答案

这是可能的,因为 Windows 上的 DLL 和 EXE 之间几乎没有区别,所以我认为您可以尝试从 SecondApp 导出例程,然后使用 LoadLibrary 将它们导入 FirstApp。

但恕我直言,最简洁的方法是将 SecondApp 分成两部分:一个包含实际完成工作的代码的 DLL 和一个 EXE,它是一个从 DLL 调用例程的简单前端。

这样,从 FirstApp 调用 DLL 的例程将很简单(并且可以跨不同版本的 Windows 和 SDK 移植)。

关于c++ - 一个应用程序可以运行另一个应用程序的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com