お世話になります。
#32770ウインドウの検索をして、リストボックスに追加したいのですが、
うまくいきません(なにも表示されない)。
なぜでしょうか?
よろしくお願いします。
Delphi2007 Windows7Pro
function EnumWindowsProcHwd(hwindow :Hwnd; lparam : LPARAM):BOOL; stdcall;
var
PC : PChar;
Len : integer;
Name : String;
begin
Result := False;
GetMem(PC, 100);
Len := GetClassName(hwindow, PC, 100);
SetString(Name, PC, Len);
FreeMem(PC);
if Len<>0 then begin
if Name ='#32770' then begin
Form1.ListBox1.Items.Add(Name);
Result := True;
end;
end;
end;
procedure TForm1.Enum32770Click(Sender: TObject);
begin
EnumWindows(@EnumWindowsProcHwd, 0);
end;
> Result := False;
> (略)
> if Name ='#32770' then begin
> (略)
> Result := True;
名前が一致したかどうかにかかわらずTrueを返さないといかんですよ
EnumWindowsは渡された関数に、ウィンドウを一つ一つ渡して呼び出していきますが
その関数がFalseを返すと「もういいから、これ以上呼ばないで!」と言ったことになります。
だから目的のものが見つかる前に(最初の一個で)もう列挙をやめちゃってますよ。
torさんありがとうございます。
なるほど、おっしゃる通りでした。
ありがとうございます。
ツイート | ![]() |