有些消息在程序在最小化后收不到(窗口显示的时候可以收到),该怎么办?
试过sendmessage,postmessage都收不到, 请问还有什么其它的方法吗?

解决方案 »

  1.   

    要不用主窗体接收改为用application接收?
      

  2.   

    我也遇到过,解决办法如下:
    var
      h:HWND;
    h:=FindWindow('TForm1',nil);//注意这里,应该以第一个参数,也就ClassName为标志查找
    if h<>0 then
    begin//  SendMessage();
    end;
      

  3.   

    可以这样实现:
    在你要关闭的窗口单元中重载窗口消息WndProc:
    protected
      procedure WndProc(var Message: TMessage); override;
    ...
    ...//实现代码:
    procedure TForm1.WndProc(var Message: TMessage);
    begin
      inherited;
      if Message.Msg = SC_CLOSE then
        Application.Terminate;
    end;
    然后在另一个窗口中:procedure TForm2.btn1Click(Sender: TObject);
    var
      h: HWND;
    begin
      h := FindWindow('TForm1', nil);
      if h <> 0 then
        SendMessage(h, SC_CLOSE, 0, 0);
    end;
      

  4.   

    xzhifei(星级饭桶(抵制日货)·飞)先生的代码我试过,如果窗口最小化,是关不掉的。我那种方法可以,你也可以添加别的消息进行拦截。