ポップアップウィンドウの表示・非表示 <TOP>
FindWindow
クラス名またはキャプションを与えてウィンドウのハンドルを取得
ShowOwnedPopups 指定したウィンドウが所有するすべてのポップアップウィンドウを表示したり隠したりする
SendMessage ウィンドウにメッセージを送信
例では、メモ帳の持っている検索ポップアップウィンドウを表示・非表示させています。
'================================================================ '= ポップアップウィンドウの表示・非表示 '= (ShowOwnedPopups.bas) '================================================================ #include "Windows.bi" ' クラス名またはキャプションを与えてウィンドウのハンドルを取得 Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$) ' 指定したウィンドウが所有するすべてのポップアップウィンドウを表示したり隠したりする Declare Function Api_ShowOwnedPopups& Lib "user32" Alias "ShowOwnedPopups" (ByVal hwnd&, ByVal fShow&) ' ウィンドウにメッセージを送信 Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) #define WM_CLOSE &H10 'ウィンドウ或いはアプリケーションをクローズされた Var Shared Combo1 As Object Var Shared Button1 As Object Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared hWnd As Long '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Combo1.AddString "表示" Combo1.AddString "非表示" End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long 'コマンドボタンの無効を設定 Button1.EnableWindow False 'メモ帳を起動 Shell "Notepad.exe", , 5 End Sub '================================================================ '= '================================================================ Declare Sub Combo1_Change edecl () Sub Combo1_Change() Var ClassName As String Var Index As Long Var Ret As Long 'クラス名でウィンドウハンドルを取得 ClassName = "Notepad" hWnd = Api_FindWindow(ClassName, ByVal 0) 'ウィンドウハンドルを取得できたときは If hWnd <> 0 Then Index = 1 - Combo1.GetCursel 'ポップアップウィンドウの表示状態を設定 Ret = Api_ShowOwnedPopups(hWnd, Index) End If End Sub '================================================================ '= '================================================================ Declare Sub MainForm_QueryClose edecl () Sub MainForm_QueryClose() Var Ret As Long 'メモ帳を終了させる Ret = Api_SendMessage(hWnd, WM_CLOSE, 0, 0) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End