procedure Tmainfrm.N2Click(Sender: TObject);
 var
 h:thandle;
begin
h:=findwindow('tmainfrm',nil);
if findwindowex(h,0,'Tmemberfrm',nil)<>0 then
begin
ShowMessage('找到该窗口');
endend;我的mainfrm主窗口程序中有个memberfrm子窗口,但上面程序就是不执行showmessage这条语句
我试了一下,h:=findwindow('tmainfrm',nil)是能找到主窗口的,但为什么findwindowex(h,0,'Tmemberfrm',nil)为什么就找不到子窗口呢,请问这条语句是哪里写错了????

解决方案 »

  1.   

    确定你子窗体的parent是TMainFrm嘛?直接findwindow('Tmemberfrm',nil)也行啊。
      

  2.   

    主窗体单元
    unit main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus,member;type
      Tmainfrm = class(TForm)
        MainMenu1: TMainMenu;
        ch1: TMenuItem;
        ch2: TMenuItem;
        procedure ch2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      mainfrm: Tmainfrm;implementation{$R *.dfm}procedure Tmainfrm.ch2Click(Sender: TObject);
    begin
    var
     h:thandle;
    begin
    h:=findwindow('tmainfrm',nil);
    if findwindowex(h,0,'Tmemberfrm',nil)<>0 then
    begin
    ShowMessage('找到该窗口');
    endend;end.
    子窗体单元
    unit member;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      Tmemberfrm = class(TForm)
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      memberfrm: Tmemberfrm;implementation{$R *.dfm}procedure Tmemberfrm.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    self.Free;
    end;end.我的完速代码就这样
      

  3.   

    你这两个TForm根本就没有Parent和Child的关系啊。楼主没有明白FindWindowEx到底是干什么的。看看Delphi Help吧先。