如何在Delphi 10.2中调用GetWindowThreadProcessId?

时间:2017-12-01 17:26:20

标签: delphi winapi

如何在Delphi 10.2中调用GetWindowThreadProcessId?

Windows API function

我发现old question在Delphi 7中处理这个主题。我想问一下自Delphi 7以来是否有任何变化? (实际版本Delphi 10.2)

我更喜欢从winapi调用Delphi函数而不是包含oleacc.dll。

1 个答案:

答案 0 :(得分:0)

这里没什么特别的。您需要使用声明Winapi.Windows的{​​{1}}单位,然后您可以调用该函数。就是这样。

您提供的链接指的是不同的功能GetWindowThreadProcessId。这是一个便捷函数,相当于调用GetProcessHandleFromHwnd来获取进程ID,然后调用GetWindowThreadProcessId来获取进程句柄。

但是,此便捷方法不允许您指定访问权限。 OpenProcess请求进程句柄。如果那些不是你需要的那么这个功能对你没用。另一个限制是,如果目标进程在与调用进程相同的用户下运行,则便捷功能仅成功。因此,我建议您拨打PROCESS_DUP_HANDLE | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | SYNCHRONIZE然后GetWindowThreadProcessId来指定您需要的访问权限。