Q&A

  • 최용일님.. 스파이 화면 캡쳐해서 올립니다.
원하시는 것이 맞는지 잘 모르겠네요.
'설치'라는 창을 찾는 것은 다 나와있는 것 같은데.
아니면 다시 말씀해주십시요.
죄송합니다.
제가 좀 우둔해서..
그럼 부탁드리겠습니다.
1  COMMENTS
  • Profile
    최용일 2004.05.15 01:23
    안녕하세요. 최용일입니다.

    화면을 보니까 똑같은 윈도텍스트(설치)와 클래스이름(#32770...)을 가진 윈도가 두개나 보이네요...

    이럴땐 FindWindow로 찾으면 어떤게 찾아지는지 확신을 가질 수 없으니까 EnumWindows로 전체 윈도를 검색하세요. 님께서 찾고자 하는 윈도우는 자식으로 '아니오...' 이런캡션을 가진 버튼이니까 이걸 조건으로 찾으시면 발견할 수 있을겁니다.

    function EnumWindowsProc(WindowHandle: THandle; var Param: THandle): BOOL; stdcall;
    var
        ButtonHandle: THandle;
    begin
        Result := True;
        Param := 0;
        ButtonHandle := FindWindowEx(WindowHandle, 0, 'Button', '아니오...');
        if ButtonHandle <> 0 then
        begin
          Result := False;
          Param := WindowHandle;
        end;
    end;

    procedure TForm1.Button6Click(Sender: TObject);
    var
        MainHandle: THandle;
        ButtonHandle: THandle;
        StaticHandle: THandle;
    begin
        EnumWindows(@EnumWindowsProc, MainHandle);
        if MainHandle <> 0 then
        begin
           ButtonHandle := FindWindowEx(MainHandle, 0, 'Button', '아니오...');
            StaticHandle := GetDlgItem(MainHandle, $00111);
        end;
    end;

    그리고 static같이 같은 부모 윈도우에 똑같은 클래스들이 있을땐 FindWindowEx로는 원하는 윈도우를 찾기 힘들구요. Spy++로 보시면 Window Properties창의 General탭에 Control ID란게 보이실겁니다. 이걸 이용해서 찾으시면 원하시는걸 정확히 찾을 수 있습니다.

    GetDlgItem(부모핸들, 컨트롤아이디);

    ^^ 항상 즐코하세요...