在子窗口(C++,win32)中执行外部exe
Executing external exe in a child window (C++, win32)
我写了一个简单的win32程序,比如abc.exe
。
我在其中添加了一个按钮,单击该按钮可以启动外部exe,比如xyz.exe
。
但是当xyz.exe
正在运行时,原始程序(即abc.exe
)应该是不可访问的。(与消息框的情况相同,除非消息框关闭,否则父窗口保持非活动状态)
我该怎么做?如果你能发布一个示例代码,那就太好了。
您可以使用WaitForSingleObject
(IIRC)来等待新进程终止。您可以在等待之前使您的窗口不可见(例如通过ShowWindow
)。首先检查是否成功启动。
按下按钮时,使用CreateProcess
函数创建"xyz.exe"进程,并保存新进程的句柄(CreateProcess
中传递的PROCESS_INFORMATION
结构中的hProcess
)。
然后,您可以通过调用EnableWindow
并将bEnable
设置为FALSE
来禁用"abc.exe"窗口。在处理WM_PAINT
消息的"abc.exe"窗口过程中,添加一个检查"xyz.exe"进程是否仍在运行。您可以使用前面保存的句柄的GetExitCodeProcess
函数,并检查返回值是否为STILL_ACTIVE
。如果"xyz.exe"进程不再处于活动状态,则可以再次使用EnableWindow
启用"abc.exe"窗口。
相关文章:
- 如何在不进入 Visual Studio 2015 中的外部库的情况下单步执行我的代码 (F11)
- 如何在没有外部库的情况下使用C++03约束执行基于正则表达式的字符串操作
- 在Visual C ++中与Stockfish(外部可执行文件)通信的最佳方式
- 执行AppData的外部EXE
- C ++ tiny-js 从外部文件执行 JavaScript 函数
- 启动/运行外部可执行文件并查看其输出日志
- 如何调试外部调用的C++可执行文件
- 使用外部可执行文件作为管道的Qt 'way'是什么?
- 通过写入全局llvm的地址从执行引擎外部初始化全局llvm值有效吗
- 可移植可执行文件是否可以直接绝对引用代码段中的外部库,而不是通过 IAT
- 是否可以从外部进程注入和执行应用程序
- Cpp 中的插件 - 执行外部程序函数
- Qt 执行外部程序
- 视觉 从 C++ 应用程序执行的外部程序中的 CPU 负载有限
- 除了执行外部程序之外,fork()的有用性
- 如何在发生UPDATE时使用lib_mysqludf_sys执行外部程序
- C++正在执行外部进程
- 如何在Windows中的父C++程序中执行外部程序
- 在子窗口(C++,win32)中执行外部exe
- 在c++的同一进程空间内执行外部可执行文件