在D7的程序中运行另一程序,如何在运行另一程序时,另一程序在运行中就显示在前端,没有运行就运行?
ShellExecute 我用这个运行,他每点击一次就运行一个实例

解决方案 »

  1.   

    首先,你肯定知道你要运行的程序的主窗体类名和标题,
    这样来做:
    首先使用FindWindow查找这个程序有没有在执行,如果 已执行,刚使用SetForegroundWindow把它放在最前面,否则,使用ShellExecute来执行它,如下:
    var
      Hdl:THANDLE;
    begin
      Hdl := FindWindow('类名','窗体标题');
      if Hdl <> Null then
      begin
        SetForegroundWindow(Hdl);
      end
      else
      begin
        //ShellExecute();
      end;
    end;
      

  2.   

    用外部工具Spy++或者WinSight32可以看到窗体类名如果要自己写,
    先用EnumWindows得到桌面上所有窗口句柄,
    再用GetClassName根据句柄得到类名