如何在 c 中调用 ::CreateProcess 来启动 Windows 可执行文件?

新手上路,请多包涵

寻找一个例子:

  1. 启动一个 EXE
  2. 等待 EXE 完成。
  3. 可执行文件完成后正确关闭所有句柄。

原文由 jm. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 850
2 个回答

像这样的东西:

 STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
if (CreateProcess(path, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
{
    WaitForSingleObject(processInfo.hProcess, INFINITE);
    CloseHandle(processInfo.hProcess);
    CloseHandle(processInfo.hThread);
}

原文由 1800 INFORMATION 发布,翻译遵循 CC BY-SA 3.0 许可协议

#include <Windows.h>
void my_cmd()
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&pi, sizeof(pi));
    // CMD command here
    char arg[] = "cmd.exe /c E:/Softwares/program.exe";
    // Convert char string to required LPWSTR string
    wchar_t text[500];
    mbstowcs(text, arg, strlen(arg) + 1);
    LPWSTR command = text;
    // Run process
    CreateProcess (NULL, command, NULL, NULL, 0,
    CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
}

这对我来说很好。没有弹出窗口和 cmd 命令按预期运行。只需要将 CHAR 指针转换为 WCHAR 指针并在每个命令前添加额外的“cmd.exe /c”。

原文由 Giver Khadka 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题