我想在窗口中,点击某个按钮,启动一个外部程序(例如:windows自带的画图)
当我点击另一个窗口时,杀死刚才启动的外部程序,然后重新启动另一个其他的程序
(如:windows自带的写字板)
如何实现?我可以启动一个外部程序,但8zd怎么杀死它,484要用到句柄啊?
偶8zd怎么用句柄,那位大侠不吝赐教,写几行代码看看,3q

解决方案 »

  1.   

    用createprocess开启另一个进程,并记录它的进程号,当需要关闭时用terminalprocess(名字记不清了)结束该进程,然后再开启其它进程。
      

  2.   

    谢谢楼上的提醒,偶试试
    还有别的方法么?偶记得有个ShellExecute API。
      

  3.   

    ShellExecute 内部执行的是CreateProcess.使用CreateProcess 和 TerminiateProcess刚好可以实现你要的功能.
    如果一定要使用ShellExecute,在想关闭的时候要先FindWindows 然后 SendMessage
      

  4.   

    tigerhohoo 你好:
    偶8zd怎么在delphi中获得一个进程的句柄,你能写几句代码给我参考一下么?
      

  5.   

    那位大侠看看我错在那里?
    我的调8出外部程序啊
    --------------------
    var
       PI : PROCESS_INFORMATION ;
       si :STARTUPINFO;
    begin
    //    CreateProcess('C:\Program Files\FlashGet\flashget.exe',
                        nil,
                        nil,
                        nil,
                        false,
                        0,
                        nil,
                        nil,
                        si,
                        PI);end;
      

  6.   

    谁告诉我错在那里了?为什么我调不外部程序啊啊啊啊var
       PI : PROCESS_INFORMATION ;
       si :STARTUPINFO;
       hp:integer;
    begin
    //
        si.cb:=sizeof(STARTUPINFO); si.wShowWindow:=SW_SHOW; si.dwFlags:=STARTF_USESHOWWINDOW;
        CreateProcess(nil,
                        'C:\Program Files\FlashGet\flashget.exe',
                        nil,
                        nil,
                        false,
                        HIGH_PRIORITY_CLASS ,
                        nil,
                        nil,
                        si,
                        PI);
       hp:= pi.hProcess;end;