如何在Delphi 10.2中调用GetWindowThreadProcessId?
我发现old question在Delphi 7中处理这个主题。我想问一下自Delphi 7以来是否有任何变化? (实际版本Delphi 10.2)
我更喜欢从winapi调用Delphi函数而不是包含oleacc.dll。
答案 0 :(得分:0)
这里没什么特别的。您需要使用声明Winapi.Windows
的{{1}}单位,然后您可以调用该函数。就是这样。
您提供的链接指的是不同的功能GetWindowThreadProcessId
。这是一个便捷函数,相当于调用GetProcessHandleFromHwnd
来获取进程ID,然后调用GetWindowThreadProcessId
来获取进程句柄。
但是,此便捷方法不允许您指定访问权限。 OpenProcess
请求进程句柄。如果那些不是你需要的那么这个功能对你没用。另一个限制是,如果目标进程在与调用进程相同的用户下运行,则便捷功能仅成功。因此,我建议您拨打PROCESS_DUP_HANDLE | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | SYNCHRONIZE
然后GetWindowThreadProcessId
来指定您需要的访问权限。