2016-10-06 5 views
1

Windows上でアプリケーションをプログラムで非表示にする方法はありますか?私はWindows + Dのショートカットと同じことを達成したいですが、単一のアプリケーションのためです。私はそのアプリケーション内でこれをやりたがっています(アプリケーションはいくつかのウィンドウで構成されていますが、そのうちの1つは移動、サイズ変更、閉じたり、最小化できません)。アプリケーションはC++で書かれており、UIにはQtを使用しています。プログラムでウィンドウ上のアプリケーションを非表示にする

+0

表示/非表示するために、上記を使用しライブラリ/ 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-のShowWindowを使用して、またはのSendMessageを経由してのいずれかSW_SHOWそれに送る:

  • ウィンドウがアプリケーションに属していない場合は、

1 - メインウィンドウ検索:

HWND hWnd = GetForegroundWindow(void); 

2-〔のShowWindow(https://msdn.microsoft.com/en-us/が

+0

2番目の 'ShowWindow'の小さな入力ミスです。私はあなたが 'SW_SHOW'を読むことを意味したと思う。 –

+0

@TimSeguineはい、感謝しなかった。 – Raindrop7

+0

すべてのアプリケーションウィンドウでSW_HIDEを使用すると、アプリケーションのアイコンがタスクバーから削除されるため、これはオプションではありません。 SW_MINIMIZEは別の答えに述べられているように、しかしトリックです。 –

関連する問題