GetWindowThreadProcessIdreturn是什么意思?
What does GetWindowThreadProcessId return?
DWORD GetWindowThreadProcessId(
HWND hWnd,
LPDWORD lpdwProcessId
);
根据文档,return 值是创建 window 的线程的标识符。这是什么意思?
我想我只是想知道 threadID 与 processID 有什么关系,它是什么以及它的用途是什么 - 它是否以某种方式验证 processID?我只想丢弃它,因为 processID 是我想要的。
先把字面问题排除在外,GetWindowThreadProcessId
[r]etrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window.
这是不言自明的,只要您了解潜在的关系即可:
- Windows 属于线程。当一个线程创建一个 window 时,两者都会进入一种密不可分的关系,这种关系一直持续到 window 被销毁。
- 线程属于进程。一旦在特定进程中创建了一个线程,它就属于该进程,直到它终止。
换句话说:每个 window 都属于一个线程,而该线程又属于一个进程。这种关系在 window.
的生命周期内是固定的
关于“标识符” 的文档,听起来好像很明确。情况并非如此,因为系统提供了两种不同的方式来识别线程(或进程):通过 ID 和句柄。
ID(由此 API 返回)只是数值,例如值 42
。它们可以自由传递,由命令行工具返回或提供给命令行工具,等等。它们没有任何附加条件。其推论是,特定值的含义会随着时间而改变。
另一方面,句柄与实际对象相关联。只要客户端持有句柄,系统就会使引用的对象保持活动状态。因此,引用的对象不会改变,允许客户对生命周期做出假设。
DWORD GetWindowThreadProcessId(
HWND hWnd,
LPDWORD lpdwProcessId
);
根据文档,return 值是创建 window 的线程的标识符。这是什么意思?
我想我只是想知道 threadID 与 processID 有什么关系,它是什么以及它的用途是什么 - 它是否以某种方式验证 processID?我只想丢弃它,因为 processID 是我想要的。
先把字面问题排除在外,GetWindowThreadProcessId
[r]etrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window.
这是不言自明的,只要您了解潜在的关系即可:
- Windows 属于线程。当一个线程创建一个 window 时,两者都会进入一种密不可分的关系,这种关系一直持续到 window 被销毁。
- 线程属于进程。一旦在特定进程中创建了一个线程,它就属于该进程,直到它终止。
换句话说:每个 window 都属于一个线程,而该线程又属于一个进程。这种关系在 window.
的生命周期内是固定的关于“标识符” 的文档,听起来好像很明确。情况并非如此,因为系统提供了两种不同的方式来识别线程(或进程):通过 ID 和句柄。
ID(由此 API 返回)只是数值,例如值 42
。它们可以自由传递,由命令行工具返回或提供给命令行工具,等等。它们没有任何附加条件。其推论是,特定值的含义会随着时间而改变。
另一方面,句柄与实际对象相关联。只要客户端持有句柄,系统就会使引用的对象保持活动状态。因此,引用的对象不会改变,允许客户对生命周期做出假设。