请教一下如何实现关闭一个内嵌的外部程序?
比如说点击应用程序的按钮把内嵌的外部程序关闭。

解决方案 »

  1.   

    用findwindow找到那个外部程序的主窗口,发个wm_close消息过去就可以了
      

  2.   

    打开内嵌的外部程序时使用createprocess,
    然后用exitprocess来关闭它。参考例子:
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
            Site:string;
            lpStartupInfo: STARTUPINFO;
            lpProcessInfo: PROCESS_INFORMATION;
            lpExitCode:cardinal;
    begin
    if (Curr=Memo1.Lines.Count) then Curr:=0;
    Site:=Memo1.lines[Curr];
    if (WinHandle<>0) then
    Begin
            GetExitCodeProcess(Winhandle,lpexitCode);
            TerminateProcess(Winhandle,lpexitcode);
            //PostMessage(WinHandle,WM_SYSCOMMAND,SC_CLOSE,0);
    End;
    Site:='C:\Program Files\Internet Explorer\IExplore '+Site;
    GetStartupInfo(lpStartupInfo);
    CreateProcess(nil,pchar(Site),nil,nil,True,CREATE_NEW_PROCESS_GROUP,nil,nil,lpStartupInfo,lpProcessInfo);Winhandle:=lpProcessInfo.hProcess;
    inc(Curr);  
    end;
      

  3.   

    因为这是内嵌到应用程序中的一个Panel上的,那么又如何用findwindow找到那个外部程序的主窗口?
      

  4.   

    那就更简单了,在你的程序中很容易就得到panel的handle了,如panel1.handle.再用Getwindow直接就可以得到外部窗口的句柄了