c++ 任务管理器中不存在进程ID返回的进程

fslejnso  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(123)

我用Windows API创建了一个进程。此函数返回的进程ID不在任务管理器中。当我尝试使用TerminateProcess()终止此进程时。GetLastError()返回5。使用Chrome作为示例浏览器。
我的目标是创建一个浏览器进程,然后在身份验证后关闭浏览器。
我的示例代码是这样的:

int main()
{
    wstring app{L"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"};
    PROCESS_INFORMATION browserProcessInfo;
    STARTUPINFO browserStartupInfo;
    ZeroMemory(&browserStartupInfo, sizeof(browserStartupInfo));
    ZeroMemory(&browserProcessInfo, sizeof(browserProcessInfo));
    wstring cmdline;
    cmdline = app + wstring{ { L" --new-windows" } };
    bool bProcessCreated = CreateProcess(NULL,(LPWSTR) (cmdline.c_str()), NULL, NULL, TRUE,     NORMAL_PRIORITY_CLASS , NULL, NULL, &browserStartupInfo, &browserProcessInfo);
    auto handle = OpenProcess(PROCESS_TERMINATE, FALSE, browserProcessInfo.dwProcessId);
    auto terminateStatus = TerminateProcess(handle, 1);
    auto errorNumber = GetLastError();
    CloseHandle(browserProcessInfo.hProcess);
    CloseHandle(browserProcessInfo.hThread);
}
eanckbw9

eanckbw91#

CreateProcess没有问题。如果Chrome已经在运行,chrome在启动后几乎立即退出。它只是告诉现有进程创建一个新窗口并退出。

相关问题