二重起動を禁止することはできました。
if App.PrevInstance then
msgbox "既に起動されています。"
end
end if
このようにやると今回の起動が終了するのですが
そうではなく前回のを終了させ新たに起動させたいのですが
どのようにすればよいのでしょうか?
案1
起動専用のプログラムを作り、
既に起動している「本物のプログラム」を殺す処理をしてから、
新たに本物のプログラムを起動する
(プロセス名などで判断すればいいかな?)
案2
ユーザに注意を促して、自力でやってもらう
…たぶんもっと良い案があるはず…
案3
自分のフォームにDDEソースとディスティネーションとなる2つのテキストボックスを貼り付け、起動したことを知らせてやる。
仕様としてはどうなんでしょう?
前のインスタンスを終わらせて、今のインスタンスを継続し
なければならない理由は何なのでしょうか?
前のを続けて今のを終わらすのだとどうマズいのでしょうか?
App.TitleでWindowを検索してから
終了Messageを送って終了するという手法で
同様のことをやったことがあります。:)
メッセージボックスで「複数起動不可」を表示するんじゃなくて、
既に先に起動しているほうのアプリケーションを最前面へ表示させる
という解決法でよければ、
http://www31.ocn.ne.jp/~heropa/vbn.htm
の「重複起動をさせない。」というトピックでどうですか?
説明不足でした。
すみません。
MP3プレイヤーを作りたいと思いました。
ファイルの関連付けをしてファイルが渡されるとタスクトレイに常駐して
音楽を鳴らしたかったのです。
そこまではできたのですが、Aという曲を聴いている時に
Bという曲を渡すとプレイヤーが2つになりAB曲が重なって
演奏されました。
そうではなくAを終了させBだけを演奏されたかったのです。
If App.PrevInstance Then
lRet = FindWindow(vbNullString, "Player")
Call PostMessage(lRet, WM_QUIT, 0, 0)
End If
こんな感じにもやってみたのですが駄目でした。
何か良い方法はありますか?
レス読んだ?
沢山提示されてるんじゃない?
要するにPlay中はMessageを受け取らないと言うことですね。
SendMessageでもだめなんだろうな、きっと。
私はMCIコマンドを使って、Playeを自作しましたが。
「ファイルの関連付け」もなされているのならば、DDEに
ついて調べることをお勧めします。
むしろ曲Bの情報を前に起動しているアプリに送信して、曲Aを終了させ、曲Bを再生させるのが自然なのではないかと・・・
超初心者です。LBELを編集できる方法があれば教えてください。
すみません。あわてました。LBELではなくてLABELでした。
何故このスレッドを使ったのか謎ですが、
Label1 = "あいうえお"
とか?
だとしたらまずは質問よりも勉強が先かと
vcwataさんへ
ここはstさんの「二重起動を禁止して前の起動を終了させるには?」について
話す場ですので質問は別に立ててください。
質問する際には、言語のバージョン等も書くようにしてくださいね
変な者が紛れ込んで申し訳ありませんでした。(赤面)
vcwataさんへ
どうしてあなたが解決のチェックをつけるのですか?
ここはstさんのスレですと以前も申し上げています。
それともvcwataさん=stさんなのでしょうか?
スレ主でないあなたがチェックをつけるのはおかしいでしょう?
追加発言の所に「解決時は質問者本人がここをチェックしてください。」と書いてありましたのでチェックしたのですが。。。
追加発言の所に「解決時は質問者本人がここをチェックしてください。」と書いてありましたのでチェックしたのですが。。。
ここのスレを作成した人=(stさん)が質問者本人では?
だからvcwataさん=stさんかどうかお聞きしたのです。
同一人物であるなら失礼致しました。
ですが、名前が別ですので、vcwataさんはここのスレをつくられた
質問者本人ではないと考えています。だからあなたが解決をつけられるのは
変です
やっと分かりました。ここのレスはstさんが質問者でそれに皆さんが回答しておられたのですね。変なのが紛れ込んで重ね重ね申し訳ありませんでした。お許しください。
レスじゃなくてスレですね。
ツイート | ![]() |