- - PR -
取得したハンドルでウィンドウを閉じたいのですが。。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-07-05 15:08
いつもお世話になります〜
ウィンドウハンドルのことで質問させてください。 ネットワーク上の共有フォルダをエクスプローラで開いて、 開くことができたらそのウィンドウのタイトルからハンドルを 取得して、そのハンドル値を使ってクローズメッセージを 送ってウィンドウを閉じようとしております。 ウィンドウハンドルは取得できるのですが、クローズメッセージ を送ってもウィンドウを閉じることができなくて困っています。。 どなたかヒントだけでも教えて頂けないでしょうか? よろしくお願いします〜m(__)m 環境はVB6,Windows2000です。接続先もWindows2000です。 -------------------------------------------------------- (Form1) Private Sub Command1_Click() Dim strUnc As String ' コマンドボタンを無効に設定 Command1.Enabled = False '接続先フォルダを取得 'Text1: フォルダ名 Text2: IPアドレス strUnc = "\\" & Text2.Text & "\" & Text1.Text ' エクスプローラを起動 Call Shell("explorer.exe " & strUnc, vbNormalFocus) End Sub Private Sub Command2_Click() Dim strWindowTitle As String Dim lngWindowHandle As Long ' ウィンドウタイトルでウィンドウハンドルを取得 strWindowTitle = Text1.Text & " - " & Text2.Text lngWindowHandle = _ FindWindow(vbNullString, _ strWindowTitle) ' ウィンドウハンドルを取得できたときは If lngWindowHandle <> 0 Then ' ウィンドウハンドル値を表示 Label3.Caption = _ lngWindowHandle ' ウィンドウタイトルを表示 "フォルダ名 - IPアドレス"の形 Label4.Caption = Text1.Text & " - " & Text2.Text 'ウインドウを閉じる Call SendMessage(lngWindowHandle, WM_CLOSE, 0, 0) End If End Sub (Module1) ' クラス名とウィンドウ名が指定された文字列と一致する ' ウィンドウのハンドルを取得する関数の宣言 Declare Function FindWindow Lib "user32.dll" _ Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long ' ウィンドウのタイトルバーのテキストを ' バッファにコピーする関数の宣言 Declare Function GetWindowText Lib "user32.dll" _ Alias "GetWindowTextA" _ (ByVal hwnd As Long, _ ByVal lpString As String, _ ByVal nMaxCount As Long) As Long 'クローズメッセージを選択されたウィンドウに送る Public Const WM_CLOSE = &H10 Declare Function SendMessage Lib "user32.dll" _ Alias "SendMessageA" _ (ByVal hwnd&, _ ByVal wMsg&, _ ByVal wParam&, _ ByVal lParam&) As Long |
|
投稿日時: 2004-07-05 15:46
こんにちは。
エクスプローラを起動しているところを、メモ帳(notepad.exe)の起動にして、 試してみるとどうなりますか? |
|
投稿日時: 2004-07-05 16:03
ご返答ありがとうございます!
メモ帳にしたところ、正常に閉じられますね。。 エクスプローラの場合はハンドルで閉じたりできない ということなんでしょうか・・・ |
|
投稿日時: 2004-07-05 17:10
こんにちは。
Call SendMessage(lngWindowHandle, WM_CLOSE, 0, 0) のところを Call SendMessage(lngWindowHandle, WM_SYSCOMMAND, SC_CLOSE, 0); としてみてはどうでしょう。(ネットで調べて得た情報ですが。。。) 定数の値は、次の通りです。 Public Const SC_CLOSE = &HF060 Public Const WM_SYSCOMMAND = &H112 |
|
投稿日時: 2004-07-05 17:38
Qooさん、ありがとうございます!!
教えていただいた引数でクローズできました! もう少しつっこんで調べるべきでしたね。。 お恥ずかしいです^^; 本当に助かりました。どうもありがとうございました〜m(__)m |
1