#32770ウインドウの検索

解決


ss  2016-09-04 21:08:58  No: 48317  IP: 192.*.*.*

お世話になります。
#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;

編集 削除
tor  2016-09-04 21:43:05  No: 48318  IP: 192.*.*.*

> Result := False; 
> (略)
>       if Name ='#32770' then begin 
>          (略)
>          Result := True; 

名前が一致したかどうかにかかわらずTrueを返さないといかんですよ

EnumWindowsは渡された関数に、ウィンドウを一つ一つ渡して呼び出していきますが
その関数がFalseを返すと「もういいから、これ以上呼ばないで!」と言ったことになります。
だから目的のものが見つかる前に(最初の一個で)もう列挙をやめちゃってますよ。

編集 削除
ss  2016-09-04 22:52:26  No: 48319  IP: 192.*.*.*

torさんありがとうございます。
なるほど、おっしゃる通りでした。
ありがとうございます。

編集 削除