用 GetForegroundWindow 获取到窗口句柄后,怎么样在程序中关闭这个窗口?
发现用 DestroyWindow(GetForegroundWindow) 和 CloseWindow(GetForegroundWindow)都不行。

解决方案 »

  1.   

    SendMessage(Handle, WM_CLOSE, 0, 0);
      

  2.   

    Internet Explorer 的窗口还是关不掉。
      

  3.   

    用PostMessage
    PostMessage(GetForegroundWindow, WM_CLOSE, 0, 0);
      

  4.   

    成功了,却不知道正常情况下PostMessage(GetForegroundWindow, WM_CLOSE, 0, 0)是否也有关不掉的窗口呢?
      

  5.   

    那哪种算正常,哪种算不正常?只要程序中收到消息后,不处理,自然就关不掉PostMessage(GetForegroundWindow, WM_QUIT, 0, 0);试试这个,有Windows SDK 程式设计经验,对在消息队列中加入WM_QUIT不会陌生吧
    看看VCL代码,因为发送给窗体的消息最终还是通过Application处理,所以可以当然也不是万能的,按你的说法,理论上能关掉的"正常"窗体更多当然还有其它方法,如直接结束进程var
      ProID:DWORD;
    begin
      GetWindowThreadProcessId(GetForegroundWindow,@ProID);
      if ProID<>0 then
        TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,ProID),0);
    end;