我正在尝试使用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中始终为零)。 我做错了什么?