如题,怎样监视另外的一个程序,发现它创建了并显示了一个Window,
事先知道这个Window的类名和WindowName。
谢谢!

解决方案 »

  1.   

    在一个子窗口被创建或者删除时,父窗口会接收到WM_PARENTNOTIFY消息,你可以做一个Hook监控这个父窗口的这个消息。
      

  2.   

    我觉得可以先用 spy++ 查看那个窗口的一些信息, 然后用EnumWindows()处理一下……
      

  3.   

    CreateToolHelp32Snapshot 取得系统中所有的进程列表,然后用Process32First,Process32Next来取得每个窗体的详细信息,根据比较,找出你所监控的窗体是否创建?
      

  4.   

    如果已知这个窗口的标题也就是title可以用FindWindow来监视。然后可以对返回的handle发消息或者处理。可以把监视程序做成服务。
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
         var
            hCurrentWindow: HWnd;
            szText: array[0..254] of char;
         begin
            hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
            while hCurrentWindow <> 0 do
            begin
               if GetWindowText(hCurrentWindow, @szText, 255) > 0 then
                  Memo1.Lines.Add(StrPas(@szText));
               hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
            end;
         end;
      

  6.   

    TechnoFantasy(冰儿马甲www.applevb.com) 的作法最不浪费资源,不用定时扫描。