A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
一番簡単な方法は3行で可能です。
Windows の タイトル名(VB6ではme.caption) が「サンプル」とした場合、
Private Sub Form_Load()
ret = FindWindow(vbNullString, "サンプル")
If ret Then Call PostMessage(ret, WM_CLOSE, 0, 0)
caption="サンプル"
End Sub
注意点は、フォームをデザインで作成する時に、タイトル名(VB6ではme.caption)を
空白にしておくことです。
タイトル名は、Form_Load の3行目で代入します。
また、Sendmessage はできるだけ使わないで、PostMessage のが安全です。
Sendmessageの場合は、既に動作しているアプリケーションがなんらかの原因で
フリーズしていた場合、自分自身もフリーズするからです。Sendmessageは確実
に相手が受け取る必要がある場合以外は、PostMessageで充分です。
相手がフリーズしていても自分自身はフリーズしないからです。
No.3
- 回答日時:
myProcの終了判断用の変数を用意して
if uMsg = uMsgExit and (bInstance = false) then
としておき
Form_Load側を
lpfnPrevProc = SetWindowLong( Me.Hwnd, GWL_WNDPROC, addressof myPreoc )
bInstance = app.PrevInstance
if bInstance then
' 自分以外の起動アプリがあるなら終了メッセージを投げる
Sendmessage HWND_BRODCAST, uMsgExit, 0, 0
bInstance = False
end if
としてやれば 複数回起動のアプリから前回起動のアプリを終了させられます
No.2
- 回答日時:
フォームをサブクラス化して 前のアプリに対して終了しろと命令すればいいでしょう
サブクラス化については AddressOf関数の使い方などを調べてみましょう
前のアプリ終了用のメッセージとしてRegisterWindowMessageにより作成したLONG型の値を使います
API用に
関数:RegisterWindowMessage, SetWidnowLong, CallWindowProc, SendMessage
定数:HWND_BROADCAST,GWL_WNDPROC,WM_CLOSE
変数: lpfnPrevProc,uMsgExit ... LONG型
Form_Loadで
' 終了用のメッセージをWindowsから取得
uMsgExit = RegisterWindowMessage("MyClose")
' 自身のWndProcを変更
lpfnPrevProc = SetWindowLong( Me.Hwnd, GWL_WNDPROC, addressof myPreoc )
if app.PrevInstance then
' 自分以外の起動アプリがあるなら終了メッセージを投げる
Sendmessage HWND_BRODCAST, uMsgExit, 0, 0
end if
といった具合にします
myProcを
if uMsg = uMsgExit and (app.PrevInstance = false) then
' 終了用メッセージで 自身が最初の起動の場合
SendMessage hwnd, WM_CLOSE, 0, 0
end if
myProc = CallwidnowProc( lpfnPrevProc, hWnd, uMSg, wParam, lParam )
といた具合にします
この方法では初回起動したアプリは終了できますが
3回目に起動したアプリから2回目に起動したアプリが終了できないようです
No.1
- 回答日時:
動作中プロセスを列挙して、その中で自分のものと同一の名前のものを探す。
見つかったならプロセスIDを確認し、自分のものでなければ終了させる。
先行動作中のものを無理にとめるのはよろしくない方法です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 exeファイルが起動しない 4 2022/06/05 16:13
- フリーソフト TJA-Player3 Develop Rewhite 2 2023/05/04 21:24
- その他(プログラミング・Web制作) ZWCAD CUIXとLISPの関係について 1 2022/09/28 03:07
- オンラインゲーム PCのオンラインゲームが急に重くなった 4 2022/10/11 05:15
- デスクトップパソコン windows7を使っているパソコンでの質問です。先日動作が遅く再起動かけると「windowsを起動 9 2022/06/16 21:31
- その他(IT・Webサービス) エクセルの実行ファイルについての質問です。 1 2023/05/04 03:58
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Excel(エクセル) WPSスプレッドシートの起動オプションの設定は可能ですか? 1 2023/02/11 19:49
- オープンソース Pythonのコードをexe化 1 2023/07/03 08:01
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBプログラムの終了
Visual Basic(VBA)
-
【VB6.0】 あるフォームから他のフォームへ値を受け渡したい
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
-
4
VB6 配列を初期化したい
Visual Basic(VBA)
-
5
VB6 二重起動確実防止について
その他(開発・運用・管理)
-
6
メモリ不足
Visual Basic(VBA)
-
7
VB6で、長い時間かかる処理実行中の表示の工夫について
Visual Basic(VBA)
-
8
任意のフォームが表示されているかを知りたい
Visual Basic(VBA)
-
9
ウィンドウのタイトルからプロセス取得
Visual Basic(VBA)
-
10
VB6で桁数チェック
Visual Basic(VBA)
-
11
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
12
定数配列の書き方
Visual Basic(VBA)
-
13
VB6にて、テキストファイルの内容を更新したいのですが。。
Visual Basic(VBA)
-
14
VBで実行中のEXEファイルの情報を取得したい
Visual Basic(VBA)
-
15
VBアプリケーションで終了コードを指定する方法
Visual Basic(VBA)
-
16
VB6.0でTimerを複数使う
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessフォームからの外部アプ...
-
他アプリケーションの終了
-
イラストレーターCS4のシリアル...
-
コマンドライン版ソフトの意義
-
Vba アプリケーションが立ち上...
-
VBSでのPostMessageについて
-
C# 管理者権限で起動したアプリ...
-
Console Applicationをタスクト...
-
WSH(VBScript)でアプリケーショ...
-
pccNTmon.exeとntrtscan.exeの違い
-
Ctrl + P のメッセージ送信
-
コンソールアプリケーションの...
-
VB.NETで起動させたExcelの多重...
-
外部アプリケーションの起動に...
-
OSの”シャットダウン中”のステ...
-
ダイアログ中の下線付きテキス...
-
outlookが強制終了してしまう
-
タイトルバーのないアプリに二...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンソールアプリケーションの...
-
Vba アプリケーションが立ち上...
-
フレームワーク「4.8.1」で、[S...
-
VBSでのSendKeysでの画面の最小化
-
イラストレーターCS4のシリアル...
-
vb6で異なるのプロジェクト間で...
-
初回接続の遅い原因について
-
VB.NETでMessageBoxを表示した...
-
MFCアプリケーションでの終了コ...
-
pccNTmon.exeとntrtscan.exeの違い
-
Windowsプログラムのビジー状態...
-
実行時のコマンドプロンプトを...
-
自分自身を更新するプログラム
-
VB.NETでフォームアクティブの...
-
Accessフォームからの外部アプ...
-
Console Applicationをタスクト...
-
httpd.pidって何ですか?
-
VB.NETで起動させたExcelの多重...
-
vcxprojファイルの修正法???
-
「AcroRd32.exe」これってウイ...
おすすめ情報