小弟我,用delphi写一程序,其中需要点击button执行一个exe文件,小弟我用的是winexec函数直接调用这个exe文件,可是问题是当小弟我第一次点击时:执行了该程序,而我没关闭这个程序,让她最小化了,我第二次点击时,又打开了一个新的文件,而不是把先前的那个最小化的执行,小弟我的问题就是:如何让我第一次点击的是打开文件,而以后每次点击都是执行这个已打开的文件(或者说是
将其窗口从最小化变为正常化,或最大化)。
  各位大虾,能给出详细的代码,或者具体的实现方法(包括函数),小弟不胜感激,定散分100

解决方案 »

  1.   

    第1次执行WinExec后用FindWindow函数获取你执行的程序的窗口句柄;
    以后执行WinExec时,检查以前保留的程序的窗口句柄是否有效,有效则用ShowWindow函数调用该窗口,无效则返回第1步。不过,我建议使用CreateProcess来代替WinExec。
      

  2.   

    在按钮里面:
     var 
     Ahandle:Thandle;
     begin
      AHandle:=FindWindow(nil,'你的窗体caption');
      if AHandle<>0 then
      begin
       postmessage(AHandle,WM_SYSCOMMAND,SC_MAXIMIZE,0);
      end
      else
      begin
       winexec('***.exe', SW_NORMAL); 
      end;
     end;