gpt4 book ai didi

创建隐藏进程(窗口不可见)

转载 作者:可可西里 更新时间:2023-11-01 09:22:31 37 4
gpt4 key购买 nike

我使用 CreateProcess() 并将启动标志设置为 STARTF_USESHOWWINDOW 和 SW_HIDE 以在后台启动应用程序并隐藏其窗口。我这样做是为了运行计划的维护任务,我不想被 Windows 打扰。

在大多数情况下,窗口是隐藏的,但在某些情况下,程序的窗口会在您面前突然弹出(例如 Google 的 Chrome - 我开始使用不同的应用程序进行测试,看看这是否曾经是一个问题,但不是.. .).

这种情况在 Windows XP 中发生的次数较少,但在 Vista 中发生的次数很多。

是否有我缺少的标志?有没有其他方法可以创建隐藏窗口的进程?

谢谢!

我的示例代码是:

char *ProgramName  
STARTUPINFO StartupInfoF;
PROCESS_INFORMATION ProcessInfoF;

memset(&StartupInfoF, 0, sizeof(StartupInfoF));
memset(&ProcessInfoF, 0, sizeof(ProcessInfoF));

StartupInfoF.cb = sizeof(StartupInfoF);
StartupInfoF.wShowWindow = SW_HIDE;
StartupInfoF.dwFlags = STARTF_USESHOWWINDOW;

if (CreateProcess(ProgramName,
"",
0,
0,
FALSE,
DETACHED_PROCESS,
0,
0,
&StartupInfoF,
&ProcessInfoF) == FALSE)
{
// error
}
else
{
// OK
}

最佳答案

您可以使用传递给 CreateProcess 的 STARTUPINFO 结构的 lpDesktop 成员在另一个桌面上启动进程。这样,该进程将显示其所有窗口,但在另一个桌面上,因此您(或您的用户)不会被它打扰。

我从来没有使用过多个桌面,所以我不能说会有什么副作用,但我认为这是可行的。首先查看 CreateDesktop并继续前进。

关于创建隐藏进程(窗口不可见),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1143206/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com