如何将窗口句柄传递给subprocess?

我正在devise一个特殊的项目。

在我的申请/stream程中,我将创build一个子stream程来做一些工作。 在我的过程中,我需要从子过程中得到反馈。 我想将我的应用程序/进程的Windows句柄传递给这个subprocess,所以我从这个subprocess发布消息。

如何将窗口句柄传递给subprocess? 我的subprocess是一个没有Window UI的命令行应用程序,主要function是这样的:

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) 

我应该通过窗口句柄的主要function? 怎么样?

谢谢

窗口句柄(HWND)对系统是全局的,所以你可以把句柄作为十进制数字打印到字符串缓冲区中,当你用CreateProcess产生你的子进程时,把它作为字符串传递给命令行,并调用_wtoi()或类似的将字符串转换回句柄。

  1. 创建一个有名的互斥体(全局),所以这两个进程可以访问它,并把它。
  2. 孵化第二个过程。 它应该等待互斥体被释放。
  3. 然后可以使用任何进程间通信方法来传递窗口句柄; 最简单的可能是共享内存 。 只需将重复的句柄写入共享内存。
  4. 释放互斥锁,以便第二个进程可以抓住它。
  5. 从共享内存中读取句柄。 现在使用它是安全的。

整个互斥操作只是为了确保第二个进程不会在写入任何东西之前从共享内存中读取。

(感谢@JonathanPotter的评论)