ウィンドウを全て最小化(U)          <TOP>


デスクトップ上のウィンドウを全て最小化、それらをもとに戻し(Undo)ます。

FindWindow クラス名、キャプションを与えてウィンドウハンドルを取得

PostMessage 関連付けられているメッセージキューにメッセージをポスト

SetWindowPos ウィンドウのサイズ、位置、及びZオーダーを設定

 

 

'================================================================
'= ウィンドウを全て最小化(U)
'=    (PostMessage2.bas)
'================================================================
#include "Windows.bi"

' クラス名またはキャプションを与えてウィンドウのハンドルを取得
Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)

' 指定されたウィンドウを作成したスレッドに関連付けられているメッセージキューにメッセージをポストする
Declare Function Api_PostMessage& Lib "user32" Alias "PostMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)

' ウィンドウのサイズ、位置、および Z オーダーを設定
Declare Function Api_SetWindowPos& Lib "user32" Alias "SetWindowPos" (ByVal hWnd&, ByVal hWndInsertAfter&, ByVal X&, ByVal Y&, ByVal CX&, ByVal CY&, ByVal uFlags&)

#define SWP_NOSIZE &H1                  'ウィンドウの現在のサイズを保持する
#define SWP_NOMOVE &H2                  'ウィンドウの現在位置を保持する
#define FLAGS (SWP_NOMOVE Or SWP_NOSIZE)
#define HWND_TOPMOST (-1)               'ウィンドウを常に最前面に配置
#define HWND_NOTOPMOST (-2)             'ウィンドウを常に最前面に配置(他のウィンドウがHWND_TOPMOSTに配置されている場合はその配下)
#define WM_COMMAND &H111                'メニューが選択された或いはコントロールにイベントが発生した
#define MIN_ALL 419
#define MIN_ALL_UNDO 416
#define vbNullString ByVal 0            '値0の文字列。値0を持つ文字列。空文字列ではない

'================================================================
'= フォームを最前面に
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var Ret As Long

    Ret = Api_SetWindowPos(GethWnd, HWND_TOPMOST, 0, 0, GetWidth, GetHeight, FLAGS)
End Sub

'================================================================
'= 全て最小化
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hWnd As Long
    Var Ret As Long
  
    hWnd = Api_FindWindow("Shell_TrayWnd", vbNullString)
    Ret = Api_PostMessage(hWnd, WM_COMMAND, MIN_ALL, 0)
End Sub

'================================================================
'= サイズを戻す
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var hWnd As Long
    Var Ret As Long

    hWnd = Api_FindWindow("Shell_TrayWnd", vbNullString)
    Ret = Api_PostMessage(hWnd, WM_COMMAND, MIN_ALL_UNDO, 0)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End