通过一个exe(菜单的形式)调用另外一个exe,已经开启了一个exe,再重复调用同一个exe的时候,
想让已经打开的exe激活为当前操作的程序,(显示到屏幕的最前面)
有什么好办法吗?
目前的对策是通过下面的代码只是弹出一个菜单
  aMutex = new System.Threading.Mutex(false,Application.ProductName);
     if (!aMutex.WaitOne(0,false))
      {
          aMutex.MessageBox.Show("不允许多重启动。","Enterprice - ",
  MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
                 }

解决方案 »

  1.   

    try
     Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, _
          ByVal lpWindowName As String) As UInteger    Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As UInteger, ByRef lpdwProcessId As UInteger) As UInteger
        Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As UInteger, _
          ByVal bInheritHandle As UInteger, ByVal dwProcessId As UInteger) As UInteger
        Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer    Public Const SW_HIDE = 0
        Public Const SW_NORMAL = 1
        Public Const SW_SHOWMINIMIZED = 2
        Public Const SW_SHOWMAXIMIZED = 3
        Public Const SW_SHOWNOACTIVATE = 4
        Public Const SW_SHOW = 5
        Public Const SW_MINIMIZE = 6
        Public Const SW_SHOWMINNOACTIVE = 7
        Public Const SW_SHOWNA = 8
        Public Const SW_RESTORE = 9
        Public Const SW_SHOWDEFAULT = 10
        Const PROCESS_ALL_ACCESS = &H1F0FFF
        Public Hwd As UInteger
        Public pid As UInteger
        Public hProcess As UInteger    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Hwd = FindWindow((vbNullString), "你的窗体标题")
            Label1.Text = Hwd
            If Hwd = 0 Then
                '运行exe
            Else
                Label2.Text = "程序已运行"
                GetWindowThreadProcessId(Hwd, pid)
                hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid)
                If hProcess = 0 Then
                    MsgBox("不能读取进程", , "提示")
                Else
                    ShowWindow(Hwd, SW_SHOW)  '显示
                End If        End If
        End Sub