
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンソールアプリケーションの...
-
必須コンポーネントと起動条件...
-
フレームワーク「4.8.1」で、[S...
-
VB6の強制終了について
-
C#でGUI・CUIの判断する仕方を...
-
初回接続の遅い原因について
-
自分自身を更新するプログラム
-
1つのPCに異なるバージョンのJ...
-
Vba アプリケーションが立ち上...
-
VB.NETでMessageBoxを表示した...
-
タイトルバーのないアプリに二...
-
コマンドライン版ソフトの意義
-
EXEファイルのタイトル取得
-
VBSでのSendKeysでの画面の最小化
-
httpd.pidって何ですか?
-
Accessフォームからの外部アプ...
-
HTMLからJava
-
outlookが強制終了してしまう
-
対象のアプリケーションが終了...
-
rubyでペイントを起動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレームワーク「4.8.1」で、[S...
-
VBSでのSendKeysでの画面の最小化
-
Vba アプリケーションが立ち上...
-
コンソールアプリケーションの...
-
自分自身を更新するプログラム
-
Accessフォームからの外部アプ...
-
イラストレーターCS4のシリアル...
-
Windowsプログラムのビジー状態...
-
VB.NETでフォームアクティブの...
-
WSH(VBScript)でアプリケーショ...
-
C#でGUI・CUIの判断する仕方を...
-
VB.NETでMessageBoxを表示した...
-
Console Applicationをタスクト...
-
pccNTmon.exeとntrtscan.exeの違い
-
初回接続の遅い原因について
-
OSによるWinExecの動...
-
vb6で異なるのプロジェクト間で...
-
アプリケーションをVBS(WSH?)で...
-
SYSTEM権限でプロセス機動
-
MFCアプリケーションでの終了コ...
おすすめ情報