我发现vb写的程序可以同时启动多个.我怎样在启动程序的时候检测这个程序已经启动了,所以不用启动了。
为了这个问题,我一直苦恼了很久,我会发现有时候这个程序会同时写两条一模一样的记录到数据库中 ,但是两个程序同时启动的时候,我又没有发现在数据库中有两个登陆信息,真是晕阿!
高手请赐教!

解决方案 »

  1.   

    private sub form_load()
        If App.PrevInstance Then
            MsgBox "该程序已经运行!", vbInformation
            end
        End If
    end sub
      

  2.   

    二楼的代码可以写在Initialize事件中。
      

  3.   

    Private Sub Form_Load()
        If App.PrevInstance Then End
    End Sub
      

  4.   

    也可以用FindWindow和FindWindowEx找窗口,或者用DDE都行。  :)
      

  5.   

    既然是API组,当然要用API实现了
    CreateMutex创建互斥量
      

  6.   

    sub main()
        if app.previnstance=true then
             msgbox "程序已经运行",vbexclamation+vbokcancel,"工程"
        else
             from1.show
    end sub
      

  7.   

    private sub form_load()
        If App.PrevInstance Then
            MsgBox "该程序已经运行!", vbInformation
            end
        End If
    end sub
    ======================================================
    不在一个目录也可吗?回答:不行。
    还是:
    看看goodname008(卢培培,充电中......) 的回复吧
      

  8.   

    同意  kmzs(.:RNPA:.山水岿濛)
    虽然  App.PrevInstance 可以屏蔽掉一般情况下的
    但是将exe文件改个名字就不行了。还是通过注册表好。我觉得:)
      

  9.   

    1: app.previnstance2: 用FindWindow和FindWindowEx找窗口3: 用DDE
      

  10.   

    1.窗口加载时修改自己的标题为TEMP
    2.if (findwindow(vbnullstring,"程序标题") then 
         end
      else
         me.caption="程序标题"
      
      

  11.   

    只要在窗体代码中加上:
    private sub form_load()
        If App.PrevInstance Then end
    end sub
    就可以了
      

  12.   

    也可以用API函数
         Dim ThWnd As Long
        
        ThWnd = FindWindow(vbNullString, "form1")
        If ThWnd <> 0 Then
            MsgBox "已经运行了程序!", vbInformation, "提示信息"
            Exit Sub
        Else
            Load form1
        End If
      

  13.   

    方法是判断App的PrevInstance属性若App.PrevInstance为True,则表示此应用程序在执行中,可以直接结束本此执行,这样就可以了。 
    Private Sub Form_Initialize() 
     If App.PrevInstance Then End
    End Sub