小弟想让自己的程序搜索当前所有窗口
只要窗口标题有我所指定的字符串(比如说锁有标题包含“Windows”的窗口)
程序就像窗口发送关闭命令
强制性关闭~`
请问该如何实现~`~

解决方案 »

  1.   

    h:=findwindow('Windows',...);
    postmessage(h,WM_CLOSE,0,0);
    Microsoft OLE DB Provider for SQL Server 错误 '80040e31' 超时已过期 /Expert/reply.asp,行105
      

  2.   

    思路
    1,用findwindowex找所有窗体handle
    2.在窗口回调函数enumwindow中判断,窗口标题的字符串中是否包含windows
    3。如果包含,发送消息,wm_close
      

  3.   

    思路
    1,用findwindowex找所有窗体handle
    2.在窗口回调函数enumwindow(‘函数指针’,’自定义参数指针‘)中判断,窗口标题的字符串中是否包含windows
    3.如果包含,发送消息,wm_close
      

  4.   

    implementation
    uses shellapi;
    {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
            hd:integer;
            str:array[0..MAX_PATH] of char;
    begin
            hd:=getdesktopwindow;
            hd:=getwindow(hd,GW_CHILD);
            while hd<>0 do
            begin
                    getwindowtext(hd,str,MAX_PATH);
                    if str<>'' then
                    begin
                            memo1.Lines.Add(str);
                            if (str=edit1.Text) and (edit1.Text<>'') then
                                    postmessage(hd,WM_CLOSE,0,0);
                    end;
                    hd:=GetWindow(hd,GW_HWNDNEXT);
            end;
    end;
      

  5.   

    : yang6130(沧海@月明) 
    谢谢兄弟
    你给的代码可以完全列出所有的(包括系统的)窗口的Caption
    但是我的意思是
    也许我要关闭所有包含一些我指定的字符串的窗口
    比如说~~一个窗口叫做“Form-Windows”但是它的Caption包含Windows我就关闭~~~不管他的全称是什么~~~
      

  6.   

    楼主:
        yang6130朋友都已经把思路告诉你了,你只要稍微改一下就可以了,做程序不能指望别人手把手的教你,要自己钻研。if str<>'' then
                    begin
                            memo1.Lines.Add(str);
                            if (pos(edit1.Text,str)<>0) and (edit1.Text<>'') then
                                    postmessage(hd,WM_CLOSE,0,0);
                    end;