Скрыть окно игры DirectX9 в ShellExecute или CreateProcess

Я пытался запустить игру с помощью ShellExecute и CreateProcess. Моя цель - скрыть окно игры. Игра построена с использованием DirectX9. Я почему-то борюсь с этим вопросом. Я использую следующие коды независимо, но безуспешно

SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = app_exe; // Path to game        
ShExecInfo.lpParameters = "";   
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL; 
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);

И с CreateProcess

ZeroMemory(&procInfo, sizeof(PROCESS_INFORMATION));
ZeroMemory(&startupInfo, sizeof(STARTUPINFO));
startupInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
startupInfo.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
startupInfo.hStdOutput =  GetStdHandle(STD_OUTPUT_HANDLE);
startupInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE);
startupInfo.wShowWindow = SW_HIDE;

CreateProcess(app_exe, cmdline, NULL, NULL, FALSE,CREATE_NO_WINDOW , NULL, NULL,&startupInfo, &procInfo);

WaitForSingleObject(procInfo.hProcess, INFINITE);

В обоих случаях игра запускается и я получаю полноэкранную игру. Что-то не так, что я делаю?


person Wajih    schedule 03.02.2015    source источник


Ответы (1)


Флаг STARTUPINFO.wShowWindow заканчивается в WinMain как последний параметр nCmdShow (https://msdn.microsoft.com/en-us/library/windows/desktop/ff381406(v=vs.85).aspx). Нет требования, чтобы созданный процесс придерживался этого запроса. Он может создавать сколько угодно видимых окон. На самом деле, это обычное дело — полностью игнорировать этот флаг. Если у вас есть исходный код запускаемого приложения и вы можете его перекомпилировать, вы можете заставить его соблюдать этот запрос.

Кроме того, я не пробовал, но думаю, что попытка скрыть полноэкранное окно DirectX, скорее всего, не удастся и/или вызовет проблемы.

person MuertoExcobito    schedule 03.02.2015
comment
Ну у меня нет исходного кода. Это подталкивает меня к запуску игры DirectX на другом десктопе. - person Wajih; 03.02.2015