怎样让程序重复运行时自动转到已有的实例中  谁帮我写个,我知道可以用加全局原子的方法让程序(gx.exe ,标题也行)不会同时运行两次,但有时明明已经告诉用户“对不起,程序已经在运行中,请不要再运行一次”,可用户就是找不到已经运行的程序在哪儿,我想最好的办法就时一旦发现程序已经在运行中就自动转到已经有的实例中,而不是显示一个信息那么不友好,我该怎么做呢?最方便的方法是什么? 

解决方案 »

  1.   

    var
      MutexHandle:THandle;begin
      MutexHandle := CreateMutex(nil, TRUE, 'MyProdExe');
      if MutexHandle <> 0 then
      begin
        if GetLastError = ERROR_ALREADY_EXISTS then
        begin
          showMessage('MyProdExe 程序已经运行...');
          CloseHandle(MutexHandle);
          Halt;
        end; 
      end;
    end;
      

  2.   

    FindWindows 找到主窗口, ShowWindow 显示之。 SetForegroundWindow 提前之。