В чем причина того, что ShowWindow() не может развернуть окно?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 В чем причина того, что ShowWindow() не может развернуть окно?

Сообщение Anonymous »

Я хочу создать процесс в полноэкранном режиме. Я попытался установить STARTUPINFO при вызове CreateProcess() следующим образом:

Код: Выделить всё

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;
}
Код выхода — 0. Но ShowWindow() не развернул окно.


Подробнее здесь: https://stackoverflow.com/questions/793 ... the-window
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • В чем причина того, что ShowWindow() не может развернуть окно?
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • В чем причина того, что ShowWindow() не сработал?
    Anonymous » » в форуме C++
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Консольное приложение .NET 8.0 с ShowWindow(ThisConsole, MAXIMIZE)
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Консольное приложение .NET 8.0 с ShowWindow(ThisConsole, MAXIMIZE)
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Tkinter не будет обновлять окно, если не свернуть/развернуть окно.
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»