簡體   English   中英

如何顯示由createprocess函數隱藏的控制台應用程序窗口

[英]how to show console app window hidden by createprocess function

我在C ++中有一個GUI。 該GUI用於使用CreateProcess方法啟動另一個基於獨立控制台的應用程序。 我通過在CreateProcess傳遞CREATE_NO_WINDOW標志來隱藏這些控制台應用程序。 現在,我想再次使其可見。 我怎么做?

代替使用CREATE_NO_WINDOW標志,而使用STARTUPINFO結構的wShowWindow成員。 首先將其設置為SW_HIDE (並將dwFlags成員設置為STARTF_USESHOWWINDOW ),然后可以在需要時使用ShowWindow()顯示/隱藏控制台窗口。 若要查找屬於新進程的窗口,請使用EnumWindows()GetWindowThreadProcessId()查找其進程/線程ID與PROCESS_INFORMATION結構中CreateProcess()返回的ID匹配的窗口。

您在創建窗口時一舉成功,然后將其傳遞了過去。 沒錯,但是您可以在createProcess方法之后顯示或隱藏gui。

PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si,sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi);
si.wShowWindow = SW_SHOW;
si.dwFlags = STARTF_USESHOWWINDOW;
si.lpTitle ="my_process_console";
CreateProcess(null,"my.exe",null,null,false,CREATE_NEW__CONSOLE,null,null,&si,&pi);

我創建了process。現在我使用find方法,然后可以顯示GUI。

HWND console_name =FindWindow(null,"my_process_console");
if(console_name){
  ShowWindow(console_name,SW_SHOW);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM