A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
起動したアプリがウィンドウを持つアプリであれば、
WindowsAPIのPostMessage()でWM_CLOSEをポストして終了させるのが安全です。
で、メッセージをポストするには送信先のウィンドウのウィンドウハンドル(hWnd)を取得する必要があります。
手軽にhWndを取得するにはWindowsAPIのFindWindow()を使うのが楽です。
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const WM_CLOSE = &H10
Sub ShutdownOtherApp
'ウィンドウハンドルの取得
Dim hWnd As Long
hWnd = FindWindow(vbNullString, "終了させるウィンドウのキャプション")
'メッセージをポスト
Call PostMessage(hWnd, WM_CLOSE, 0, 0)
End Sub
ただし、同じキャプションのウィンドウが複数立ち上がっている状態では、FindWindow()では
ウィンドウを一意に特定できないので、Shellで起動したときの戻り値のプロセスIDと
同じプロセスであるかをチェックしながらウィンドウを調べていく必要があります。
列挙の方法はこちらをどうぞ。
http://www.vbvbvb.com/jp/gtips/0751/gEnumWindows …
Declare Function GetWindowThreadProcessId Lib "user32" Alias "GetWindowThreadProcessId" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Dim PId As Long
PId = Shell("アプリ名", vbNormalFocus)
・
・
・
'列挙されたウィンドウハンドルに対しての処理です。
Dim wndPId as Long
'ウィンドウハンドルからプロセスIDを取得
Call GetWindowThreadProcessId(hWnd. wndPId)
'同一であれば起動したプロセスだということ
If PId = wndPId Then
'WM_CLOSEをポスト
Call PostMessage(hWnd, WM_CLOSE, 0, 0)
End If
参考URL:http://www.vbvbvb.com/jp/gtips/0751/gEnumWindows …
No.1
- 回答日時:
こんにちは。
maruru01です。前回の質問で他アプリケーションの終了の仕方はOKなのでしょうか。
(回答に対するお礼は補足がまったくないようですが。)
いちおう参考URL載せますが。
http://www.users.gr.jp/ml/archive/vb/1708.asp
(ただし、NT4.0はうまくいかないらしい。)
で、あとはこれをメイン画面(フォーム)のUnLoadイベントにでも記述すればいいんじゃないでしょうか。
参考URL:http://www.users.gr.jp/ml/archive/vb/1708.asp
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) ソフトが異常終了します 1 2022/08/28 01:41
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- デスクトップパソコン windows7を使っているパソコンでの質問です。先日動作が遅く再起動かけると「windowsを起動 9 2022/06/16 21:31
- ノートパソコン Win10 EXCEL でのエラー 2 2022/04/03 15:57
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- その他(コンピューター・テクノロジー) サポート終了のアプリケーションの移設 5 2022/08/16 14:35
- Windows 10 windows10のクリーンインストールが完了出来ない 2 2022/06/04 13:33
- 英語 英語の相の種類 Wikipediaでは He began to talk.(起動相) He cont 1 2023/06/26 11:54
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
vbaから他のアプリを終了
Visual Basic(VBA)
-
VB6.0 SHELLで起動したプログラムを終了さしたいのですが
Visual Basic(VBA)
-
ExcelVBAにてアプリをタスクマネージャーから強制終了させたいのですが
Visual Basic(VBA)
-
-
4
外部プロセスを終了したい!!
Visual Basic(VBA)
-
5
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
6
VBAでOutlookを終了させたい ExcelVBAで既に起動されているOutlookを終了させる
Visual Basic(VBA)
-
7
VBA PDFファイル印刷後のAcrobatReaderDCの起動画面を閉じたい
Excel(エクセル)
-
8
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
9
起動中のアプリ、ソフトの取得
Visual Basic(VBA)
-
10
PDFファイルを開き、印刷し、閉じるマクロ
Visual Basic(VBA)
-
11
ウィンドウのタイトルからプロセス取得
Visual Basic(VBA)
-
12
Vba アプリケーションが立ち上がるまで待つ
Excel(エクセル)
-
13
Shell関数で起動したメディアプレーヤーを終了したい。
Visual Basic(VBA)
-
14
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
15
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
16
VBAでこんなことできますか?
PowerPoint(パワーポイント)
-
17
プロセスIDの取得方法について
Visual Basic(VBA)
-
18
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
19
指定のWORKBOOKを前面表示する方法(エクセル:VBA)
Excel(エクセル)
-
20
PDFファイルを開かずに印刷したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ゲームでは結局どっちが良いの?
-
Excelの上下を固定したい
-
検索の画面がでなくなってしま...
-
FindWindowの戻り値が違う!?
-
コンソールアプリケーションで...
-
ラジオボタンの初期指定
-
ExcelVBAでAPIを使って外部ウイ...
-
作成したウインドウのサイズを...
-
eclipseからコンソールが消えた
-
[VBA] UserForm を Excel の W...
-
UWSCで特定のChromeのタブをア...
-
名前を付けて保存のウィンドウ...
-
デスクトップにフォーカスを移動
-
EnumChildWindowsの使い方(VBA)
-
API32 コントロールのEditテキ...
-
VBAで単一ブック複数窓を閉じる...
-
VB2005のイミディエイト ウィン...
-
ACCESS2007で起動時にフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
検索の画面がでなくなってしま...
-
ゲームでは結局どっちが良いの?
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
[VBA] UserForm を Excel の W...
-
EnumChildWindowsの使い方(VBA)
-
Vba LongPtrについて教えてくだ...
-
ExcelのBOOKが消えた!
-
他のアプリケーションの終了処理
-
ラジオボタンの初期指定
-
ExcelVBAでAPIを使って外部ウイ...
-
作成したウインドウのサイズを...
-
UWSCで特定のChromeのタブをア...
-
隠れたウィンドウの画面をキャ...
-
「&HFFFF」「&H1A」とは?
-
名前を付けて保存のウィンドウ...
-
最大化と最小化ボタン
おすすめ情報