win2k窗口句柄获得进程id

这段代码展示了在Windows 2000操作系统中,如何从窗口句柄获取对应的进程和线程ID。通过PTHREADINFO结构,检查是否为当前线程,并使用NtCurrentTeb()函数获取信息,或者对于非当前线程,使用NtUserQueryWindow()函数查询。
摘要由CSDN通过智能技术生成

/*以下代码在win2k源码中寻找到的 位于win2k/privata/ntos/w32/ntoser/client/winmgrc.c Ln255*/

/***************************************************************************/
* GetWindowThreadProcessId
* Get's windows process and thread ids.
* 24-Jun-1991 ScottLu   Created.
/***************************************************************************/
DWORD GetWindowThreadProcessId(
    HWND    hwnd,
    LPDWORD lpdwProcessId)
{
    PTHREADINFO ptiWindow;
    DWORD dwThreadId;
    if ((ptiWindow = PtiWindow(hwnd)) == NULL)
        return 0;
    /*
     * For non-system threads get the info from the thread info structure
     */
    if (ptiWindow == PtiCurrent()) {
        if (lpdwProcessId != NULL)
            *lpdwProcessId = HandleToUlong(NtCurrentTeb()->ClientId.UniqueProcess);
        dwThreadId = HandleToUlong(NtCurrentTeb()->ClientId.Uniqu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值