我在程序中先获得IE窗口的句柄(且保证有效),然后用
::SendMessage(hwnd,WM_CLOSE,0,0);
像这样关闭IE窗口,但是却没有关闭,我又拿MSDN程序测试(没开别的程序所以就拿他开刀了),我获得MSDN窗口的句柄,然后用同样的WM_CLOSE,MSDN被关闭了这是为什么呢?如果要关闭IE窗口该如何做呢?实在是想不通阿?!所以请各位高人指教,如果我有什么没说清楚,我可以再描述一下,就是恳请帮一下忙,回答完后我会尽快结帖的,谢谢!!!!!

解决方案 »

  1.   

    IE窗口好象特殊用WM_CLOSE是关不了的。
      

  2.   


    // 可以关闭ie 、文件夹窗口,原因我也说不清,期待答案
    ::PostMessage((hwnd,WM_CLOSE,0,0);
      

  3.   

    奇怪了,其他程序都能关闭的,帮一下忙,postmessage也不行的阿
      

  4.   

    哦不好意思,PostMessage可以关闭的!!!
    但是能不能告诉我为什么?!
      

  5.   

    看来当然是  SendMessage 和 PostMessage 的不同了。
    PostMessage 和SendMessage的区别主要在于是否等待其他程序消息处理。PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行;而SendMessage必须等待其他程序处理消息后才返回,继续执行。这两个函数的返回值也不同,PostMessage的返回值表示PostMessage函数执行是否正确,而SendMessage的返回值表示其他程序处理消息后的返回值
    所以有可能是IE给SendMessage返回的消息有问题。
      

  6.   

    现在发现不仅IE,而且文件夹窗口也是关不掉的,奇怪了
    ————————————————————————————文件夹窗口和ie窗口内核相同。
      

  7.   

    ie和文件夹窗口好象都基于EXPLORER程序,可能它有特殊的消息吧。
    不对当我没说。
      

  8.   

    回楼上,WM_QUIT我试过,没用啊...反正问题也解决了,只是想深知一下而已,所以这么久没结贴,再放两天我就结帖吧,谢谢楼上各位的回答
      

  9.   

    我用一个单独的程序向另一程序的按钮发WM_SHOWWINDOW消息就不好使,我用钩子进到他肚皮里就好用了:)
      

  10.   

    消息的默认处理会关闭窗口,但是要是人家的WM_CLOSE处理函数不调用默认处理的话...
    常用这种方法防止按ESC意外关闭对话框
      

  11.   

    呵呵,那为什么Post可以,Send不行,这两个我原以为只是同步与异步差异...
      

  12.   

    ie窗口关闭要发送消息:
    ::SendMessage ( hWndIE, WM_SYSCOMMAND, SC_CLOSE, 0 );