投稿日 | : 2004/07/22(Thu) 16:27 |
投稿者 | : 鍋 |
Eメール | : |
URL | : |
タイトル | : Re^4: アプリの複数起動を禁止したい |
管理人様、ご回答ありがとうございます。
> どちらもここの逆引きヘルプにありますよ!
Googleとかばかり見ていてここのサンプルを見ていませんでした。灯台下暗し。お恥ずかしい。
さて、サンプルの「APIを使って Window を操作する」を参考にさせていただきました。
ゆ様からのご回答とあわせて
Private Sub Form_Load()
If App.PrevInstance = True Then
strCaptionName = "検索画面"
lnghwnd = FindWindow(vbNullString, strCaptionName )
retValue = SetForegroundWindow(lnghwnd)
End
End If
End Sub
こんな感じで作ってみたのですが、うまく動いてくれません。
strCaptionName の値を別のアプリに変更するとそちらは最前面にでてくるところから
既に起動しているアプリではなく二重起動したアプリ(自分自身)をアクティブにしているようです。
で、その直後にアプリを終了している。
最初のアプリを明示的に指定したいのですが、同じアプリなのでキャプション名もクラス名も同じ。
ない頭を絞って考えてみましたが思いつきませんでした。
プロセスIDとか取得できたとしてもそれは2番目のアプリのプロセスIDになりそうですし。
読んでいる場所が見当はずれだったら申し訳ありません。
> 又、掲示板のログや当サイト内の検索を使っても簡単に見つけられるかと思います。
う〜ん、「最前面」とか「ウィンドウ アクティブ」とかいろいろ入れていたのですが
めぼしい項目はなかなか出てこなくて・・・
探し方が下手だったようです。