也可用Post WM_QUIT消息。
如下:procedure TForm1.Button1Click(Sender: TObject);
var
   h : hwnd ;
begin
     h := Findwindow(nil,'程序主窗口名') ;
     if h <> 0 then
        Postmessage(h,WM_QUIT,0,0);end;

解决方案 »

  1.   

    发送wm_close消息,
    可得给分呀
      

  2.   

    handle:=Findwindow(窗体类名,主窗口名)
    sendmessage(handle,Wm_close,0,0)
      

  3.   

    想关人家,你就得抓住他的把柄(FindWindow返回这个东东),给他发个信(WM_CLOSE)让他关了不就完了吗?把柄抓住后可以做好多事,在他脸上涂鸦等等都可以。
      

  4.   

    在Win9x里面很好办!在NT里面关系到权限的问题,麻烦一点儿。我这儿没有NT,只有98,刚好我写过相关的代码,测试通过。这是知道可执行文件的文件名的情况,至于窗口的情况,也类似,你自己修改一下,看看帮助应该可以搞定。
    代码如下:
    假设要终止的程序的文件名为:project2.exe,那么例程如下:
    uses tlhelp32;
    var
    lppe:tprocessentry32;
    sshandle:thandle;
    hh:hwnd;
    found:boolean;
    begin
    sshandle:=createtoolhelp32snapshot(TH32CS_SNAPALL,0);
    found:=process32first(sshandle,lppe);
    while found do
    begin
      //进行你的处理其中lppe.szExefile就是程序名。
      if uppercase(extractfilename(lppe.szExeFile))='PROJECT2.EXE' then
      begin
        hh:=OpenProcess(PROCESS_ALL_ACCESS,true,lppe.th32ProcessID);
        TerminateProcess(hh,0);
      end;
      found:=process32next(sshandle,lppe);
    end;
    end;
      

  5.   

    wm_close消息有的时候行不通!对于CloseQuery结果为False的程序就不行!用Openprocess & TerminateProcess的方法,可以强行终止它!
      

  6.   

    songhtao(三十年孤独) :我怎么不能?运行时无反映?能告诉我源码吗?