程序运行时,经常有弹出了个窗口,要自动关闭它,该怎么办?我弹出窗口的模式是
    Application.MessageBox(Pchar('****'),Pchar('***'),Mb_OK);  //我用个线程来不断搜索,试图关闭它,可是不成功。help!
Application.MessageBox标题和内容都不固定。谢谢各位大大大大

解决方案 »

  1.   

    问题是,怎么findwindow呢?标题和其内容都不固定,
    hwnd1:=FindWindow(lpclassname,lpwindownname);//
      

  2.   

    我用这个
    for i:=0 to Screen.FormCount-1 do 都遍历不到那个Application.MessageBox窗口,但是可以遍历showmessage弹出的窗口。
      

  3.   

    FindWindowEx(父窗口句柄, 0, '#32770 (Dialog)', nil)
      

  4.   

    确实不行,枚举吧。
    EnumWindows()或者
    GetWindow()
      

  5.   

    呵呵呵,这个功能我做过的。
    场景是这样的:比如在点击保存按钮时,保存结束后,利用系统application弹出消息,
                            提示用户,但过1秒或2秒钟,自动关闭这个提示窗。实现方法:利用Ttimer实现,例如设置Ttimer为1秒执行var H:THANDLE;
         buf:array of [0..128] of char;
    begin
         time1.enabled:=false;
         H:=GetActiveWindow();
        if H<>0 then
        begin
            GetClassName(H,buf,64);
            GetWindowText(H,buf+64,64);    
        end;
        if (StrComp(buf,'#32770')=0) then
              EndDialog(H,IDOK);
    end;
    在需要显示提示窗的按钮中激活timer1 即timer1.enabled:=true;
      

  6.   

    改写下Application.MessageBox这个函数,让它可以自己关闭,it is very easy.
      

  7.   

    使用EmbeddedWb: 
    http://www.euromind.com/iedelphi/embeddedwb.htm 在它的OnShowMessage中屏蔽: 
    http://www.euromind.com/iedelphi/embeddedwb/onshowmessage.htm