#32770ウインドウの検索

解決


ss  2016-09-05 06:08:58  No: 48317

お世話になります。
#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-05 06:43:05  No: 48318

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

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

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


ss  2016-09-05 07:52:26  No: 48319

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加