Re: 2重起動


[コメントツリー表示を見る] [発言時刻順表示を見る]

Posted by Uz on 1999/11/30 00:29:44

In Reply to: 2重起動 Posted by OTK on 1999/11/29 20:24:07


    > 2重起動をチェックして、
    > 既に起動しているならアクティブにするには?
    > (最小化の時は、デフォルトのサイズにする)

    お久しぶりです、OTKさん。

    とりあえず半分だけお答えします。

    '以下フォーム
    Option Explicit

    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

    Private Const APP_CAPTION = "UzApplication"

    Private Sub Form_Load()
    Dim nRet As Long 'hWndが入る

      Me.Caption = "DUMMY_CAPTION" 'ダミーをいれておかないと自分を検出してしまいます
      If App.PrevInstance = -1 Then
        nRet = FindWindow(vbNullString, APP_CAPTION) '検出できればhWndを返す
        Call SetForegroundWindow(nRet) 'ウィンドウをアクティブにする
    End
    End If
    Me.Caption = APP_CAPTION
    End Sub
    '以上
    これでアクティブにはできます。
    あと、最小化のときはもとのサイズに戻すのは
    ハンドルがわかっているので簡単だと思います。
    では。


記事スレッド一覧