- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试从我的 exe 调用另一个程序,我希望它在后台静默执行。 (由于这个调用会很频繁,所以弹窗是不行的。)
可能的做法是这样的:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
ZeroMemory( &pi, sizeof(pi) );
if (!CreateProcess(NULL, cl, NULL, NULL, FALSE,
CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) return -1;
else
{
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return 0;
}
进程已创建且所需程序运行,但不幸的是,尽管有 CREATE_NO_WINDOW
和 SW_HIDE
标志,窗口仍会显示。我错过了什么/做错了什么吗?
我想我也许可以去做
GetProcessId
从进程句柄获取进程IDEnumWindows
和GetWindowThreadProcessId
找到匹配的窗口HWND
调用ShowWindow
和SW_HIDE
但这很麻烦,而且我认为 SW_HIDE
无论如何都应该在创建进程时“开箱即用”。
最佳答案
您在 wShowWindow
字段中提供的值被传递到新启动函数的 WinMain
入口点,但这只是建议性的 - 它完全取决于新的处理它是否显示它的窗口。
显示应用程序主窗口时的标准/推荐行为是调用 ShowWindow(hWnd, SW_SHOWNORMAL);
并且 SW_SHOWNORMAL
在这种情况下表示“使用传递的任何值到 WinMain
"但同样,是否执行此操作取决于进程。
获得所需内容的一种方法是使用 WH_CBT
Hook (请参阅 SetWindowsHookEx
的文档)。这将使您可以 Hook 窗口创建并将其重新定位到屏幕外或完全停止显示。
关于c++ - 为什么尽管有 SW_HIDE 和 CREATE_NO_WINDOW,通过 CreateProcess 调用的程序的窗口仍会显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17874418/
我在 Delphi 中有一个控制台应用程序,我通过这种方式从其他应用程序启动: FillChar(ExecInfo, SizeOf(ExecInfo), 0); With ExecInfo Do Be
我尝试运行隐藏的应用程序,但应用程序表单仍然可见。 ShellExecute(Handle, nil, 'app.exe', nil, nil, SW_HIDE); 如何在Delphi中运行隐藏的应用
您好, 我想以某种方式强制 Firefox 或 Chrome 浏览器打开浏览器窗口隐藏(窗口在创建时从一开始就具有 SW_HIDE 样式)。 例如: 如果我想在当前浏览器窗口之外打开一个新的浏览器窗口
我正在尝试确定已使用 CWnd::ShowWindow() 隐藏或启用的窗口控件的可见性。 (或::ShowWindow(hWnd,nCmdShow)) 我不能简单地使用::IsWindowVisib
我派生了 CHtmlEditCtrl,并对其做了很少的改动。到目前为止,我还没有覆盖任何方法。 问题是,当我在此控件上调用 ShowWindow(SW_HIDE) 时,窗口本身被销毁(m_hWnd 为
我想从 DLL 创建/显示窗口,但是这个 DLL 是从使用 STARTUPINFOW::wShowWindow 创建的进程加载的之前设置为 SW_HIDE。不幸的是,我无法更改创建流程的任何代码: S
在我的 C++ 应用程序中,我有以下代码: ShowWindow(hDlg, SW_HIDE); MakeScreenshot(); ShowWindow(hDlg, SW_SHOW); 这应该捕获没
当我在 c++ mfc 中执行 _popen 命令时,它会打开一个我不喜欢的 shell 窗口,是否可以将其隐藏?例如,当您尝试使用 ShellExecute 函数执行命令时,它可以选择使用 SW_H
我试图在计算机启动时隐藏第三部分窗口。我正在使用以下代码。 #include #include int main() { char windowName[500]; HWND wind
我尝试从我的 exe 调用另一个程序,我希望它在后台静默执行。 (由于这个调用会很频繁,所以弹窗是不行的。) 可能的做法是这样的: STARTUPINFO si; PROCESS_INFORMATIO
我是一名优秀的程序员,十分优秀!