
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba アプリケーションが立ち上...
-
pccNTmon.exeとntrtscan.exeの違い
-
MFCアプリケーションでの終了コ...
-
VB.NETでMessageBoxを表示した...
-
OSによるWinExecの動...
-
コンソールアプリケーションの...
-
VB6での二重起動(複数起動)の制...
-
C# の OpenFileDialog
-
vcxprojファイルの修正法???
-
vb6で異なるのプロジェクト間で...
-
FOM出版の公認テキスト&問題集...
-
VBSでのSendKeysでの画面の最小化
-
C#でGUI・CUIの判断する仕方を...
-
WSH(VBScript)でアプリケーショ...
-
VB.NETで起動させたExcelの多重...
-
VBからaccess UserControl
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
TCP/IP通信時のサーバーからの受信
-
Windows上で、シグナル(SIGTERM...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレームワーク「4.8.1」で、[S...
-
pccNTmon.exeとntrtscan.exeの違い
-
VB.NETで起動させたExcelの多重...
-
コンソールアプリケーションの...
-
C#でGUI・CUIの判断する仕方を...
-
Accessフォームからの外部アプ...
-
VB.NETでMessageBoxを表示した...
-
WSH(VBScript)でアプリケーショ...
-
MFCアプリケーションでの終了コ...
-
他アプリケーションの終了
-
イラストレーターCS4のシリアル...
-
Vba アプリケーションが立ち上...
-
実行時のコマンドプロンプトを...
-
VB6での二重起動(複数起動)の制...
-
OSによるWinExecの動...
-
VBSでのSendKeysでの画面の最小化
-
初回接続の遅い原因について
-
VB.NETでフォームアクティブの...
-
FOM出版の公認テキスト&問題集...
-
JAVA VMの2回目以降の起動が早...
おすすめ情報