关于shellexecute问题  如果已经打开了一个程序 当再次点击的时候 如何唤起已经打开的实例而不是重新再起一个如果用shellexecute打开应用程序 ,已经打开了该应用程序后。当下一次执行的时候不让他重新再开一个 而是把刚才打开的程序弹起来 用什么办法?

解决方案 »

  1.   

    楼主的兄弟,此题如计算器为例:
    --------------------------------------
    procedure TForm1.Button1Click(Sender: TObject);
    var
    H:HWND;
    begin
    shellexecute(handle,'open','calc.exe',nil,nil,sw_shownormal);
    H:=FindWindow(nil,'计算器');
    if H>0 then
         begin
         showmessage('ok');
         SetActiveWindow(H);
         end;
    end;
      

  2.   

    追问一句  findwindow的第二个参数是什么意思 如果是任意的应用程序呢?
      

  3.   

    FindWindow----------第一个参数是类名:可以用GetClassName获得。
                        第二个参数是标题名。
      

  4.   

    如果是任意程序怎么办  比如如果换成notepad.exe 那么findwindow该怎么写 谢谢
      

  5.   

    兄弟 多谢了   可是刚刚我试了试 如果已经打开的话 用你刚才的程序 只能showmessage不能把已打开的程序弹出来  请进一步指点 万分感谢
      

  6.   

    SetActiveWindow(H);-->SetForegroundWindow(H);
    试试
      

  7.   

    var
    H:HWND;
    begin
    H:=FindWindow(nil,'计算器');
    if H>0 then
         begin
         SetActiveWindow(H);
         SetForegroundWindow(H);
         end
    else
      shellexecute(handle,'open','calc.exe',nil,nil,sw_shownormal);end;