我怎么能在winXP中创建一个隐藏进程窗口(从任务栏)的进程?使用CreateProcess函数?

0 c++ winapi createprocess c++builder

 /* CreateProcess initialization */
 STARTUPINFO si;
 PROCESS_INFORMATION pi;

 memset(&si, 0, sizeof(si));
 memset(&pi, 0, sizeof(pi));
 si.cb = sizeof(si);

 long ret;
 // si.wShowWindow = SW_HIDE;
 // hide process window.... // run in background..

 si.dwFlags = STARTF_USESHOWWINDOW;
 si.wShowWindow = SW_HIDE;

 if (!CreateProcess(0, exe,
        0, 0, 1, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi)) {
    return;
 }
 //int prez = WaitForSingleObject(pi.hProcess, INFINITE);

 //CloseHandle(pi.hProcess);
Run Code Online (Sandbox Code Playgroud)

And*_*ron 5

您可以尝试将结构的dwFlags成员设置STARTUPINFOSTARTF_USESHOWWINDOW,将wShowWindow成员设置为SW_HIDE.

这将使CreateProcess()传递0作为nCmdShow参数WinMain.但是,并非所有Windows应用程序都表现良好,并将此值用于初始调用ShowWindow().

  • ShowWindow() 实际上会忽略您第一次调用时传递的值,并使用 STARTUPINFO (已记录)来帮助解决这个确切的问题。 (2认同)