화면을 보니까 똑같은 윈도텍스트(설치)와 클래스이름(#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란게 보이실겁니다. 이걸 이용해서 찾으시면 원하시는걸 정확히 찾을 수 있습니다.
화면을 보니까 똑같은 윈도텍스트(설치)와 클래스이름(#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(부모핸들, 컨트롤아이디);
^^ 항상 즐코하세요...