gpt4 book ai didi

delphi - 为什么@运算符返回的地址与GetProcAddress函数返回的地址不同

转载 作者:行者123 更新时间:2023-12-03 14:46:45 28 4
gpt4 key购买 nike

我需要获取 Win APi 方法的地址 ( FindWindowW ),我正在使用 @ 运算符和 GetProcAddress但两者返回不同的结果。

var
p1, p2 : Pointer;
begin
p1:= @Winapi.Windows.FindWindowW;
p2:=GetProcAddress(GetModuleHandle('user32.dll'), 'FindWindowW');
ShowMessage(Format('p1 %p p2 %p ', [p1, p2]));
end;

为什么返回的值不一样?

最佳答案

因为静态链接使用thunk跳转表来调用DLL函数。

示例中的

p2 是进程中 FindWindowW 函数的正确地址,而 p1 是跳转指令的地址,例如这个

jmp dword ptr [SomeAddress]

其中SomeAddress指向FindWindowW函数的实际地址。

关于delphi - 为什么@运算符返回的地址与GetProcAddress函数返回的地址不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414747/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com