【发布时间】:2015-04-24 09:03:53
【问题描述】:
嗨,
我对 C++ 和 WinAPI 比较陌生。到目前为止,我已经设法创建了一个应用程序,它使用 CreateProcess 函数和 STARTUPINFO 结构来创建一个新桌面,在该新桌面内启动一个新 explorer.exe 进程并切换到它。
接下来,因为我希望能够在这两个桌面之间随时切换,只需按下一个键(在我的例子中是 LCTRL),我制作了另一个使用 SetWindowsHookEx 的应用程序em> 函数为键盘创建一个全局挂钩。
因为钩子仅在调用 destkop 中处于活动状态,在第一个应用程序中,使用 CreateProcess,在创建 explorer.exe 进程并切换到新桌面之前,我已经启动了第二个应用程序的可执行文件两次:一次当前桌面和新桌面一次。
一切正常,我可以随时在桌面之间切换,但现在我被要求对启动的进程结构做一些事情,以某种方式让秒应用程序代码在里面运行第一个,无需创建新流程。因为这是我的第一篇文章,我无法上传进程树的 sn-p,但来自 live.systernals 的 procexp 应用程序显示以下结构:
---FirstApp.exe:
-------------SecondApp.exe(原桌面)
-------------explorer.exe(新桌面)
-------------SecondApp.exe(新桌面)
所以基本上,我的问题是:我可以让挂钩键盘的应用程序的代码与 FirstApp 在同一个线程中运行吗?这个实现,一个启动这三个进程的应用程序,以及第二个连接键盘的应用程序,是我的想法(我没有被要求这样做,我只是被要求创建一个新桌面并在它们之间切换),所以我也愿意为更好地解决这个问题提出建议。
【问题讨论】:
-
两个进程之间需要使用某种形式的IPC进行通信。
-
谢谢,我会读一些关于进程间通信的文章