1.使用FindWindow找到程序的Handle
2.PostMessage(Handle,WM_Close,0,0);

解决方案 »

  1.   

    如何在 Delphi 应用程序中, 去关闭外部已开启的应用程序?
    下面给出一段在 Delphi 中关闭“计算器”程序为例:
    var
    HWndCalculator : HWnd;
    begin
    // find the exist calculator window
    HWndCalculator := Winprocs.FindWindow(nil, '计算器'); // close the exist Calculator
    if HWndCalculator <> 0 then
    SendMessage(HWndCalculator, WM_CLOSE, 0, 0);//用这个消息来关闭
    end;
    明白了吗?
      

  2.   

    mysine(宝兰)的答复在程序员大本营里就有了,
    我的意思是说我并不知道a,b,c三个名字,我的程序能列出目前有这几个程序在运行,
    然后选择性的关闭。而不是先知道程序的名字再来关闭。
      

  3.   

    调用系统函数EnumWindows()获取指定窗体的句柄,在自己定义的回调函数中定义窗体的标题名或者类名。具体程序可在人民邮电出版社的一本叫《Delphi编程疑难详解》,作者:季雪岗等,不妨去书店转转?
      

  4.   

    wuyh78(阿华),thanks
    不过我急需,有人知道吗?
      

  5.   

    只要有handle 不论是发消息还是杀进程都ez了,以下是所有窗口枚举
    procedure TForm1.Button1Click(Sender: TObject);var curwin:hwnd;text:array[0..255] of char;begincurwin:=getwindow(handle,GW_HWNDFIRST);while curwin<>0 do beginif getwindowtext(curwin,@text,255)>0 thenmemo1.Lines.Add(strpas(text));curwin:=getwindow(curwin,gw_hwndnext);end;end;
      

  6.   

    redbirdli(火鸟):very good!
    请教一问题:如果想在我的应用程序中调用某一别的应用程序,比如调用AutoCAD,而我又无法确定我的AutoCAD程序安装在何处,那么我该如何做呢?比如我的应用程序在安装到别人的电脑上时,我是无法得知其AutoCAD会装在什么地方的……
    请各位一并赐教!
      

  7.   

    到注册表查一下autocad安装在哪里.
      

  8.   

    谢谢各位宝贵意见!可是:
       “用个对话框问问就行了”:有缺陷,因为对于某一使用我的程序的用户而言,他总不可能每次都要去对话框中找需要的应用程序吧,我想第一次可能可以通过对话框去找,但是第2次、第3次……,你每次要调用(AutoCAD)都要来个对话框,岂不太叫人……
       mc_music(狂沙)兄:如何在程序中实现在注册表中查找实现呢?收索注册表似乎很慢啊! 
      

  9.   

    >>我想第一次可能可以通过对话框去找,但是第2次、第3次……,你每次要调用(AutoCAD)都要来个对话框,岂不太叫人……难道你不会把第一次的结果保存起来吗?//faint
      

  10.   


    同意    Hillside(要命的是买不到D盘了) 
      

  11.   

    wuyh78(阿华),你贴个帖子,我去给你回复。
      

  12.   

    去这儿看看 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
    顺便提一下 http://rbsky.myetang.com  中有关于注册表的全面文章及对注册表全面操作的程序视窗超人
      

  13.   

    cds27(冰封) 兄:你真能解决?我就不会食言的……
    thanks redbirdli(火鸟)!