DWORD GetWindowThreadProcessId(
HWND hWnd,
LPDWORD lpdwProcessId
);
Run Code Online (Sandbox Code Playgroud)
根据文档,返回值是创建窗口的线程的标识符。这意味着什么?
我想我只是想知道 threadID 与 processID 有什么关系,它是什么以及它的用途是什么 - 它是否以某种方式验证 processID?我想丢弃它,因为 processID 就是我想要的。
预先解决字面上的问题,GetWindowThreadProcessId
[r]检索创建指定窗口的线程的标识符,以及创建该窗口的进程的标识符(可选)。
只要您了解潜在的关系,这是相当不言自明的:
换句话说:每个窗口都由单个线程拥有,而该线程又属于单个进程。这种关系在窗口的生命周期内是固定的。
文档中谈到“标识符”,听起来似乎很明确。情况并非如此,因为系统提供了两种不同的方式来识别线程(或进程):通过 ID 和通过句柄。
ID(由该 API 返回)只是数值,例如 value 42。它们可以自由传递、由命令行工具返回或提供给命令行工具等等。它们没有任何附加条件。由此推论,特定值的含义会随着时间而变化。
另一方面,句柄与实际对象相关联。只要客户端持有句柄,系统就会使引用的对象保持活动状态。因此,引用的对象不会改变,从而允许客户端对生命周期做出假设。
| 归档时间: |
|
| 查看次数: |
2401 次 |
| 最近记录: |