2015-02-03 7 views
0

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

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); 

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

ответ

1

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

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

+0

Ну, у меня нет исходного кода. Это подталкивает меня к запуску игры DirectX в другом десктопе. – Wajih

 Смежные вопросы

  • Нет связанных вопросов^_^