
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も見ています
-
vbaから他のアプリを終了
Visual Basic(VBA)
-
VB6.0 SHELLで起動したプログラムを終了さしたいのですが
Visual Basic(VBA)
-
VBAでOutlookを終了させたい ExcelVBAで既に起動されているOutlookを終了させる
Visual Basic(VBA)
-
-
4
ExcelVBAにてアプリをタスクマネージャーから強制終了させたいのですが
Visual Basic(VBA)
-
5
外部プロセスを終了したい!!
Visual Basic(VBA)
-
6
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
7
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
8
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
9
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
10
VBAで外部プログラムを非表示で実行するには
Visual Basic(VBA)
-
11
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
12
Accessフォームからの外部アプリ起動方法
Access(アクセス)
-
13
他アプリケーションの終了
Visual Basic(VBA)
-
14
Shell関数で起動したメディアプレーヤーを終了したい。
Visual Basic(VBA)
-
15
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
16
Access 別フォームへの再クエリ(更新)がしたい。
その他(データベース)
-
17
Adobe Reader を閉じる
その他(Microsoft Office)
-
18
【EXCEL-VBA】PDFファイルを開いて印刷したい
Excel(エクセル)
-
19
VBAで他のプログラムが起動しているか調べる方法
Visual Basic(VBA)
-
20
VBA PDFファイル印刷後のAcrobatReaderDCの起動画面を閉じたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ラジオボタンの初期指定
-
DellノートPC購入で悩んでいま...
-
Vba LongPtrについて教えてくだ...
-
[ExcelVBA] 別ウィンドウのエク...
-
MFC ダイアログ上のID取得につ...
-
Excelの上下を固定したい
-
勝手にウィンドウが開いて止ま...
-
検索の画面がでなくなってしま...
-
エクセルで1行目から3行目が消...
-
ExcelのBOOKが消えた!
-
FindWindowの戻り値が違う!?
-
Console.WriteLine で表示されない
-
ボタンのハンドルウィンド取得...
-
最大化でタスクバーを隠す
-
Excel で2つウインドウ枠の...
-
ExcelVBAでAPIを使って外部ウイ...
-
ダイアログボックスのタスクバ...
-
なぜ右側のウィンドウにはこの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
Vba LongPtrについて教えてくだ...
-
勝手にウィンドウが開いて止ま...
-
ラジオボタンの初期指定
-
ゲームでは結局どっちが良いの?
-
検索の画面がでなくなってしま...
-
Excelの上下を固定したい
-
「&HFFFF」「&H1A」とは?
-
ExcelのBOOKが消えた!
-
エクセルで1行目から3行目が消...
-
[VBA] UserForm を Excel の W...
-
【VB2008】 マウス操作の一時的...
-
VBA .Value=.Value ?
-
作成したウインドウのサイズを...
-
DellノートPC購入で悩んでいま...
-
UWSCで特定のChromeのタブをア...
-
Alt+P,Alt+NをPostmessageで送...
-
隠れたウィンドウの画面をキャ...
-
Console.WriteLine で表示されない
おすすめ情報