【问题标题】:How to execute a process in background by C and use windows API?如何通过C在后台执行进程并使用Windows API?
【发布时间】:2023-03-29 02:58:01
【问题描述】:

我有一个用 C 语言编写的小程序,它从 windows API 开始。我想创建一些进程并通过 Windows API 在后台运行其中一个,在前台运行另一个。我的代码创建过程:

int createBackgroundProcess(){
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
CreateProcess("exampleFile.exe",NULL,NULL,NULL,FALSE,
CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);

WaitForSingleObject(pi.hProcess,10000);//INFINITE

TerminateProcess(pi.hProcess, 0);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}

我怎样才能让它进入后台(后台仍然在运行,但我们看不到它)(因为另一个进程将同时运行)

【问题讨论】:

  • “背景”是什么意思?您想从流程中获得什么类型的行为?您是在谈论限制其优先级吗?
  • Windows 没有“后台进程”的概念。任何没有窗口的进程都是漂亮的背景,CREATE_NO_WINDOW 是一个选项。其他选项包括创建服务、使用任务调度程序、在不同的桌面上运行它。
  • @Cody Gray:那里的背景仍在运行,但我们看不到它。
  • @HansPassant:是的,我使用了 create_no_window 并且它正在工作:D
  • 您应该将其发布为答案。将来,请在您的问题中包含有关您正在尝试做什么的更多信息。如果我们知道它是一个控制台应用程序,并且您想隐藏控制台窗口,我们可以在几个小时前提供答案,而无需猜测。

标签: c windows process background


【解决方案1】:

您在寻找ShowWindow( GetConsoleWindow(), SW_HIDE ); 吗? 只需制作两个单独的程序,就像在控制台中运行一样,然后将其隐藏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 2017-04-04
    • 2012-03-15
    • 2015-01-18
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    相关资源
    最近更新 更多