在这里看到简单的Delphi代码:
function EnumProc(Handle: THandle; Lparam: LPARAM): Bool; stdcall;
begin
TMemo(Lparam).Lines.Add(IntToStr(Handle));
end;
Run Code Online (Sandbox Code Playgroud)
叫它 :
procedure TForm1.FormCreate(Sender: TObject);
begin
EnumWindows(@EnumProc, Lparam(Memo1))
end;
Run Code Online (Sandbox Code Playgroud)
此代码在Windows XP,Window 7 x86和Windows 8中成功运行.
现在测试Windows 7 x64中的代码,它只返回一个项目,这意味着Windows只调用一次EnumProc,这意味着EnumProc的结果为false,没有更多的窗口可用于枚举...
现在将我们的EnumProc更改为:
function EnumProc(Handle: THandle; Lparam: LPARAM): Bool; stdcall;
begin
TMemo(Lparam).Lines.Add(IntToStr(Handle));
result:= True;
end;
Run Code Online (Sandbox Code Playgroud)
好的,这个怎么样?!它适用于任何版本的Windows,包括Windows 7 x64!
任何的想法 ?它是Windows中的错误还是我的代码中的错误?
关心Mojtaba.
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |