Win7 64 비트에서 Delphi XE2 업데이트 3 또는 업데이트 4를 사용하십시오. 이 델파이에서 델파이 6Delphi XE2 EnumWindows가 제대로 작동하지 않습니다.
에 콜백 함수가 False를 반환 할 때까지 창을 처리 6 enumwindows를 작동하는 데 사용처럼
호출 enumwindows이 작동하지 않습니다. 설명서에서 수행해야하는 작업은 다음과 같습니다.
"열거를 계속하려면 콜백 함수가 TRUE를 반환하고 열거를 중지하려면 FALSE를 반환해야합니다." 다음과 같이
enumwindows에 전화 걸기 : 그것은 그래서 콜백 기능이 buttonclick 이벤트 전에 코드에 정의되어
function FindMyWindow(hWnd: HWND; lParam: LPARAM): boolean; stdcall;
var TheText : array[0..150] of char;
str : string;
begin
Result := True;
GLBWindowHandle := 0;
if (GetWindowText(hWnd, TheText, 150) <> 0) then
begin
str := TheText;
if str = 'Form1' then
begin
GLBWindowHandle := hWnd;
Result := False;
end
else
result := True;
end;
end;
그냥 명확하게하기 : 여기
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@FindMyWindow,0);
if GLBWindowHandle <> 0 then begin
ShowMessage('found');
end;
end;
가 콜백 함수입니다 인터페이스 섹션에서 정의 할 필요없이 컴파일러에서 찾을 수 있습니다. 거짓 결과가 반환되고 잘못된 결과가 반환되고 GLBWindowHandle이 후이 열거가 계속 델파이 XE2를 사용하여 실행하는 경우 GLBWindowHandle 제로
하지되면
이 델파이 6 창을 열거하여 실행하는 경우는 중지 항상 0입니다.
WTF? 누구나 열거 형이 문서 상태와 같이 멈추지 않고 델파이 6에서 사용되는 이유를 알 수있는 아이디어가 있습니까?
건배!
'GLBWindowHandle'이 설정되고 재설정 된 것을 확인 했습니까? 아니면 설정되지 않았을 가능성이 있습니까? – hvd
예, 설정되고 다시 설정됩니다. –
32 비트 및 64 비트 용으로 컴파일하면 동일한 문제가 발생합니까? –