我写了一个程序向别的程序的文本筐中写了一些字符串,然后点ok,这时程序就会弹出一个MessageBox,我想获得这个MessageBox的句柄,然后给它发送确定的消息,让它消失,但是我用findwindow不能执行,因为弹出来的是一个模态的MessageBox,哪位高手知道怎么解决这个问题?

解决方案 »

  1.   

    findwindow不能执行,因为弹出来的是一个模态的MessageBox
    FindWindos与模态非模态有关吗?
      

  2.   

    你查找那程序的子窗口,如果名字与MessageBox名字相同...
    就发送回车键按下或者IDOK被按下的消息就行了
      

  3.   

    findwindow不能执行,因为弹出来的是一个模态的MessageBox
    FindWindos与模态非模态有关吗?
    -------------------------------------
    ::EnableWindow(hNext,TRUE);//将按钮生效
    ::SendMessage(hNext,BM_CLICK,0,0);//发送单击消息

    HWND hMessage=::FindWindow("#32770","提示");
    HWND hMessageOk=::FindWindowEx(hMessage, 0, "Button", "确定" );
    ::EnableWindow(hMessageOk,TRUE);//将按钮生效
    ::SendMessage(hMessageOk,BM_CLICK,0,0);//发送单击消息我的程序单步执行的时候,在::SendMessage(hNext,BM_CLICK,0,0)后,MessageBox就弹出来了,然后我的程序就不能继续执行了,除非把MessageBox上的ok按下,让messagebox消失后才能继续单步执行。
      

  4.   

    用PostMessage不等消息返回即可执行下一步...
      

  5.   

    用PostMessage不等消息返回即可执行下一步...-------------------------------------
    能给个例子吗?我刚用vc,不清楚哦
      

  6.   

    你把所有的SendMessage改成PostMessage就OK了
      

  7.   

    你把所有的SendMessage改成PostMessage就OK了-----------------------------------
    搞定,不过还是有一点小小的不同,在postmessage后边,我加了一个sleep(100),才能成功,要不然不会成功的。等会就揭贴
      

  8.   

    那只是因为你控制的程序来不及反应...MessageBox还没打出来,你的消息已经发过去了...
      

  9.   

    自己做一个MessageBox,在这个类里处理就好了