描述:假如我们我们编译好了一个test.exe,运行之并且处于未结束状态。若此时手动再次启动test.exe 
问题1 如何判断程序以及运行?
      可用 app.preinstance 判断
    2 当发觉自身已经被运行时,如何使先前已经运行的程序窗口被激活,并最大化,然后结束自身。
    拜托大家了!

解决方案 »

  1.   

    可以用api来实现用findwindow方法查找,看是否有已启动的窗口。再用showwindow方法将窗体最大化
    ShowWindow VB声明 
    Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long 
    说明 
    控制窗口的可见性(在vb里使用:针对vb窗体及控件,请使用对应的vb属性) 
    返回值 
    Long,如窗口之前是可见的,则返回TRUE(非零),否则返回FALSE(零) 
    参数表 
    参数 类型及说明 
    hwnd Long,窗口句柄,要向这个窗口应用由nCmdShow指定的命令 
    nCmdShow Long,为窗口指定可视性方面的一个命令。请用下述任何一个常数 
    SW_HIDE 隐藏窗口,活动状态给令一个窗口 
    SW_MINIMIZE 最小化窗口,活动状态给令一个窗口 
    SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态 
    SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态 
    SW_SHOWMAXIMIZED 最大化窗口,并将其激活 
    SW_SHOWMINIMIZED 最小化窗口,并将其激活 
    SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口 
    SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 
    SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 
    SW_SHOWNORMAL 与SW_RESTORE相同 
      

  2.   

    Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As Any, ByVal lpWindowName As String) As Long
    Declare Function SetActiveWindow Lib "user32" _
        (ByVal hwnd As Long) As Long
    Declare Function ShowWindow Lib "user32" _
        (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    If App.PrevInstance = True Then
       MsgBox sExit, vbCritical, "提示..."
       If FindWindow(0&, "主窗体名称") > 0 Then
          AppActivate "主窗体名称
          ShowWindow FindWindow(0&, "主窗体名称"), 9
       End If
       End
    End If
      

  3.   

    http://expert.csdn.net/Expert/topic/2325/2325686.xml?temp=.5716364
      

  4.   

    我这里有一个,只是麻烦一点。如果要的话,来信:[email protected]
      

  5.   

    也可以用DDE实现,请参考:http://wlbookwl.myrice.com/jck/1027dde.htm