相关疑难解决方法(0)

为什么不能将地址转换为64位Delphi中的嵌套本地函数?

如.关闭相关问题 - 下面添加更多示例.

下面的简单代码(找到顶级Ie窗口并枚举其子代)与'32位Windows'目标平台一起正常工作.早期版本的Delphi也没有问题:

procedure TForm1.Button1Click(Sender: TObject);

  function EnumChildren(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
  const
    Server = 'Internet Explorer_Server';
  var
    ClassName: array[0..24] of Char;
  begin
    Assert(IsWindow(hwnd));            // <- Assertion fails with 64-bit
    GetClassName(hwnd, ClassName, Length(ClassName));
    Result := ClassName <> Server;
    if not Result then
      PUINT_PTR(lParam)^ := hwnd;
  end;

var
  Wnd, WndChild: HWND;
begin
  Wnd := FindWindow('IEFrame', nil); // top level IE
  if Wnd <> 0 then begin
    WndChild := 0;
    EnumChildWindows(Wnd, @EnumChildren, UINT_PTR(@WndChild));

    if WndChild <> 0 then
      ..    

end; …
Run Code Online (Sandbox Code Playgroud)

delphi delegates nested 32bit-64bit delphi-xe2

17
推荐指数
1
解决办法
1652
查看次数

标签 统计

32bit-64bit ×1

delegates ×1

delphi ×1

delphi-xe2 ×1

nested ×1