VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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になりそうですし。
読んでいる場所が見当はずれだったら申し訳ありません。

> 又、掲示板のログや当サイト内の検索を使っても簡単に見つけられるかと思います。
う〜ん、「最前面」とか「ウィンドウ アクティブ」とかいろいろ入れていたのですが
めぼしい項目はなかなか出てこなくて・・・
探し方が下手だったようです。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -