2016-10-06 2 views
1

Есть ли способ программно скрыть приложение на окнах? Я хочу добиться того же, что и ярлык Windows + D, но для одного приложения. Я хочу сделать это изнутри этого приложения (приложение состоит из нескольких окон, один из которых не может быть перемещен, изменен, закрыт или сведен к минимуму пользователем). Приложение написано на C++ и использует Qt для пользовательского интерфейса.Программно скрыть приложение на окнах

+0

[ShowWindow] (https://msdn.microsoft.com/en-us/ библиотека/windows/desktop/ms633548 (v = vs.85) .aspx) с SW_HIDE, вам нужны дескрипторы хранилища (HWND) для всех ваших окон. – ST3

+0

Использование SW_HIDE во всех окнах приложений приводит к удалению значка приложения из панели задач , поэтому это не вариант. SW_MINIMIZE, как указано в другом ответе, однако делает трюк. –

ответ

1
ShowWindow(HwndWindow, SW_MINIMIZE); 

Вот MSDN ShowWindow documentation.

Кроме того, вы можете найти EnumChildWindows, что полезно для поиска всех этих окон, если их ручки недоступны для вас.

+0

Это действительно то, что я искал. Благодарю. –

2

сделать так, что это так легко:

1- получить дескриптор этого окна:

HWND hChild = GetDlgItem(hWnd, ID_MYCHILD); 

2- отправить к нему SW_SHOW либо с помощью ShowWindow или через SendMessage:

  • если окно не относится к вашей заявке, то:

1 - извлечь основное окно с:

HWND hWnd = GetForegroundWindow(void); 

2- использования выше, чтобы скрыть/показать его

+0

Маленькая опечатка во втором 'ShowWindow'. Я думаю, вы хотели, чтобы он читал 'SW_SHOW' –

+0

@TimSeguine да спасибо, что я этого не заметил. – Raindrop7

+0

Использование SW_HIDE во всех окнах приложений приводит к удалению значка приложения из панели задач, поэтому это не вариант. SW_MINIMIZE, как указано в другом ответе, однако делает трюк. –

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