IE(複数起動)の終了 <TOP>
IEが複数起動されている場合一度に終了させています。
GetWindow ウィンドウハンドルを取得
GetClassName クラス名を取得
SendMessage ウィンドウにメッセージを送信
参照
'================================================================ '= IE(複数)を終了させる
'= (IEClose.bas) '================================================================ #include "Windows.bi" ' 指定されたウィンドウと指定された関係にあるウィンドウのハンドルを取得 Declare Function Api_GetWindow& Lib "user32" Alias "GetWindow" (ByVal hWnd&, ByVal wCmd&) ' ウィンドウのクラス名を取得 Declare Function Api_GetClassName& Lib "user32" Alias "GetClassNameA" (ByVal hWnd&, ByVal lpClassName$, ByVal nMaxCount&) ' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) #define WM_SYSCOMMAND &H112 'システムメニューが操作された #define SC_CLOSE &HF060 '閉じる #define GW_HWNDFIRST 0 '最前面のウィンドウを検索 #define GW_HWNDNEXT 2 '基準となるウィンドウの次のウィンドウを検索 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var ClassName As String Var hWnd As Long Var Ret As Long '最前面のウィンドウハンドルを取得 hWnd = Api_GetWindow(GethWnd, GW_HWNDFIRST) '見つかったなら、クラス名が"IEFrame"出あれば「終了」を繰り返す Do While hWnd <> 0 ClassName = String$(256, " ") 'クラス名を取得 Ret = Api_GetClassName(hWnd, ClassName, 255) ClassName = Left$(ClassName, InStr(ClassName, Chr$(0)) - 1) If ClassName = "IEFrame" Then Ret = Api_SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0) End If hWnd = Api_GetWindow(hWnd, GW_HWNDNEXT) Loop End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End