![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBプログラムの終了
Visual Basic(VBA)
-
VB6 二重起動確実防止について
その他(開発・運用・管理)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
-
4
タイトルバーのないアプリに二重起動防止機能を付けたい
Visual Basic(VBA)
-
5
【VB6.0】 あるフォームから他のフォームへ値を受け渡したい
Visual Basic(VBA)
-
6
VBで実行中のEXEファイルの情報を取得したい
Visual Basic(VBA)
-
7
VB6.0 SHELLで起動したプログラムを終了さしたいのですが
Visual Basic(VBA)
-
8
任意のフォームが表示されているかを知りたい
Visual Basic(VBA)
-
9
VB6にてネットワーク上にある共有フォルダを・・・
Visual Basic(VBA)
-
10
VB6 配列を初期化したい
Visual Basic(VBA)
-
11
二重起動禁止にする理由とは
Visual Basic(VBA)
-
12
VB6.0でTimerを複数使う
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xamppのApacheへの接続設定
-
VBからaccess UserControl
-
Microsoft Outlook2007を使用し...
-
Vba アプリケーションが立ち上...
-
イラストレーターCS4のシリアル...
-
VBSでのSendKeysでの画面の最小化
-
逆コンパイルと逆アセンブルの...
-
Macターミナルで実行中のプログ...
-
USJでの割り込み
-
緯度、経度の 10進法と 60進法...
-
3のつく数字と3の倍数のみを表...
-
プログラミングの問題です。写...
-
【プログラミングScratch】で音...
-
他のアプリケーションをクリッ...
-
F-BASICからC言語への変換
-
OpenCvsharpについて。
-
PCからシリアル通信で外部ハー...
-
メモリが不足しています(VBA)
-
VB上で実行中の無限ループの止め方
-
プロセスIDからウィンドウハ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba アプリケーションが立ち上...
-
フレームワーク「4.8.1」で、[S...
-
コンソールアプリケーションの...
-
VBSでのSendKeysでの画面の最小化
-
実行時のコマンドプロンプトを...
-
VB.NETでMessageBoxを表示した...
-
イラストレーターCS4のシリアル...
-
Windowsプログラムのビジー状態...
-
Accessフォームからの外部アプ...
-
pccNTmon.exeとntrtscan.exeの違い
-
初回接続の遅い原因について
-
Java Web Start アプリケーショ...
-
C#でGUI・CUIの判断する仕方を...
-
Console Applicationをタスクト...
-
現在起動中のアプリケーション...
-
vb6で異なるのプロジェクト間で...
-
VB.NETでフォームアクティブの...
-
自分自身を更新するプログラム
-
MFCアプリケーションでの終了コ...
-
対象のアプリケーションが終了...
おすすめ情報