
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)
-
VBAでOutlookを終了させたい ExcelVBAで既に起動されているOutlookを終了させる
Visual Basic(VBA)
-
VB6.0 SHELLで起動したプログラムを終了さしたいのですが
Visual Basic(VBA)
-
-
4
ExcelVBAにてアプリをタスクマネージャーから強制終了させたいのですが
Visual Basic(VBA)
-
5
外部プロセスを終了したい!!
Visual Basic(VBA)
-
6
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
7
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
8
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
9
他アプリケーションの終了
Visual Basic(VBA)
-
10
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
11
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
12
プロセスIDの取得方法について
Visual Basic(VBA)
-
13
Shell関数で起動したメディアプレーヤーを終了したい。
Visual Basic(VBA)
-
14
Accessフォームからの外部アプリ起動方法
Access(アクセス)
-
15
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
16
Adobe Reader を閉じる
その他(Microsoft Office)
-
17
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
18
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
-
19
VBAで外部プログラムを非表示で実行するには
Visual Basic(VBA)
-
20
VBAで他のプログラムが起動しているか調べる方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
勝手にウィンドウが開いて止ま...
-
メニューバーの高さの取得方法
-
スクロールバーについて
-
他アプリのアクティブな子ウイ...
-
隠れたウィンドウの画面をキャ...
-
ゲームでは結局どっちが良いの?
-
ラジオボタンの初期指定
-
SetWindowPosで、移動可能のフ...
-
フリーのデータ消去ソフト「DES...
-
EXCEL VBA WindowsAPIの文字列...
-
MFC ダイアログ上のID取得につ...
-
2重起動の防止方法
-
ExcelのBOOKが消えた!
-
エクセル;新しいウインドウを開く
-
作成したウインドウのサイズを...
-
他のアプリケーションの終了処理
-
Console.WriteLine で表示されない
-
グラフを別ウィンドウで立ち上...
-
Excel2010-ファイルが開かない...
マンスリーランキングこのカテゴリの人気マンスリー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 で表示されない
おすすめ情報