VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 アプリケーション(自・他)関係のメニュー
1.VB上から他の実行可能プログラム(EXE)を起動する
2.指定のウィンドウを常に手前に表示する(フォームを最前面に表示)
3.関連付けられたアプリケーションでファイルを開く
4.他のアプリのウィンドウを操作(最小化・元のサイズ・終了他)する
5.他のEXEのハンドルを取得しVBから終了する
6.Shell関数で起動したプログラムの終了を待つ
7.アクティブウィンドウのキャプションタイトルを取得する
8.アクティブウィンドウにキーストロークを渡す
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.


5.他のEXEのハンドルを取得しVBから終了する
1.他のEXEのハンドルを取得しVBから終了する
2.上記プログラム使用上の留意点
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:追加なし
使用 API:
FindWindow SendMessage 
その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。
    :
このページのトップへ移動します。 1.他のEXEのハンドルを取得しVBから終了する(073)   2002.05.16

Option Explicit   'SampleNo=073 WindowsXP VB6.0(SP5) 2002.05.16

'クラス名又はキャプションタイトルを与えて
'ウィンドウのハンドルを取得する(P81)
Private Declare Function FindWindow Lib "user32" _
  Alias "FindWindowA" (ByVal lpClassName As String, _
  ByVal lpWindowName As String) As Long

'指定のウィンドウにメッセージを送る(P750)
Private Declare Function SendMessage Lib "user32" _
  Alias "SendMessageA" (ByVal hwnd As Long, _
  ByVal wMsg As Long, ByVal wParam As Long, _
  lParam As Any) As Long
'アプリケーションをクローズする時
'ウィンドウに送られるメッセージ(P835)
Private Const WM_CLOSE As Long = &H10
Dim strClassName  As String 'クラス名
Dim strCaptionName As String 'キャプション名

Private Sub hwndAcquire()
'ハンドル取得及び終了処理のサブプロシージャ
  Dim hwnd As Long
  Dim ret As Long
  If Len(strClassName) Then
    'クラス名を与えてハンドルを取得
    '起動中ならハンドルが返り、起動していなければ 0 が返る
    hwnd = FindWindow(strClassName, vbNullString)
  ElseIf Len(strCaptionName) Then
    'キャプション名を与えてハンドルを取得する場合
    'strCaptionName = "Microsoft Excel - Book1"  '電卓の場合  "電卓"
    hwnd = FindWindow(vbNullString, strCaptionName)
  End If
  '指定のハンドルに終了のメッセージを送る
  ret = SendMessage(hwnd, WM_CLOSE, 0&, 0&)
End Sub

Private Sub Command1_Click()
  'クラス名の取得  Excel="XLMAIN"  電卓=SciCalc
  strClassName = Text1.Text
  hwndAcquire
  strClassName = ""
End Sub

Private Sub Command2_Click()
  'キャプション名の取得 (Microsoft Excel - Book1   電卓)
  strCaptionName = Text2.Text
  hwndAcquire
  strCaptionName = ""
End Sub

このページのトップへ移動します。 2.上記プログラム使用上の留意点
操作としては、指定のアプリケーションのウィンドウのハンドルを取得して、そのハンドルに対して、終了のメッセージを送信しております。

Text1.Text には、クラス名を入力しておいて下さい。
Text2.Text には、キャプション名を入力しておいて下さい。

電卓等はキャプション名が固定されているが、Excel 等はブック名等が付加されるためその都度変わります。
変わるものは、クラス名で、変わらないものはキャプション名で取得した方が便利です。

このサンプルでは、次のウィンドウ情報を取得できます。
ウィンドウハンドル
ウィンドウテキスト
ウィンドウクラス名
ウィンドウスタイル
ウィンドウ ID 番号
親ウィンドウハンドル(適用可能な場合)
親ウィンドウテキスト(適用可能な場合)
親ウィンドウクラス名(適用可能な場合)
モジュールファイル名


クラス名を調べるには、下記のようなプログラムや Spy++ 等で前もって調べておいて下さい。

ウィンドウのクラス名や属性を取得する方法(Microsoft サポート技術情報)
http://support.microsoft.com/default.aspx?scid=kb;ja;JP112649


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
キャプション名を与えてハンドルを取得する クラス名を与えてハンドルを取得 指定のハンドルに終了のメッセージを送る ウィンドウを終了 プログラムの終了
指定のアプリケーションを終了させる アプリケーションを閉じる 他のアプリをクローズする アプリケーションの終了



このページのトップへ移動します。