Код: Выделить всё
WCHAR cmd = L"Calc";
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(STARTUPINFO));
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindows = SW_MAXIMIZE;
// or si.dwFlags = STARTF_RUNFULLSCREEN;
BOOL isCreated = CreateProcess(nullptr, cmd,
nullptr, nullptr, FALSE, 0, nullptr, nullptr, &si, &pi);
Поэтому я попытался получить его HWND после создания такого процесса:
p>
Код: Выделить всё
HWND FindMainWindow(DWORD processId) {
struct ProcHwnd {
DWORD process_id;
HWND hwnd;
};
ProcHwnd hProcWnd;
auto EnumWindowCallback = [](HWND hwnd, LPARAM lParam) -> BOOL {
ProcHwnd* data = reinterpret_cast(lParam);
DWORD windowProcessID;
GetWindowThreadProcessId(hwnd, &windowProcessID);
if (windowProcessID == data->process_id) {
if (IsWindowVisible(hwnd)) {
data->hwnd = hwnd;
return false;
}
}
return true;
};
EnumWindows(EnumWindowCallback, reinterpret_cast(&hProcWnd));
return hProcWnd.hwnd;
}
int main() {
WCHAR cmd = L"Calc";
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(STARTUPINFO));
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
si.cb = sizeof(STARTUPINFO);
BOOL isCreated = CreateProcess(nullptr, cmd,
nullptr, nullptr, FALSE, 0, nullptr, nullptr, &si, &pi);
WaitForInputIdle(pi.hProcess, INFINITE);
HWND hWindow = FindMainWindow(pi.dwProcessId);
if(hWindow == nullptr)
return -1;
ShowWindow(hWindow, SW_MAXIMIZE);
return 0;
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... the-window