EnumWindows在x64中返回不正确的句柄

时间:2015-03-22 17:54:55

标签: delphi 64-bit

我正在尝试使用Delphi XE7u1获取Windows列表(在Win8.1 x64中)。

简单代码

unit Unit1;

interface

uses
  Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Winapi.Windows;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

procedure TForm1.FormShow(Sender: TObject);

  function EnumWinProc(AHandle: HWND; Param: LPARAM): BOOL; stdcall;
  var
    Buf: array[0..255] of WideChar;
  begin
    Result := True;
    GetClassName(AHandle, @Buf, 255);
    Form1.Memo1.Lines.Append(Buf);
  end;

begin
  EnumWindows(@EnumWinProc, 0);
end;


end.

在为32位平台编译时按预期工作,但在为64位平台编译时不起作用(在这种情况下,AHandle在EnumWinProc中始终为零)。 我做错了什么?

0 个答案:

没有答案