首页
社区
课程
招聘
[求助]纯c语言_根据进程pid取到窗口句柄,返回的窗口句柄错误,求指点
发表于: 2015-12-29 02:23 3593

[求助]纯c语言_根据进程pid取到窗口句柄,返回的窗口句柄错误,求指点

2015-12-29 02:23
3593
不知为什麽返回的窗口句柄老是是错误的,求指点

HWND call_窗口_进程id取窗口句柄(DWORD dwProcessID)
{
        HWND h = GetTopWindow(0);
        while (h)
        {
                DWORD pid = 0;
                DWORD dwTheardId = GetWindowThreadProcessId(h, &pid);

                if (dwTheardId != 0)
                {
                        if (pid == dwProcessID/*your process id*/)
                        {
                                //h = GetNextWindow(h, GW_HWNDNEXT);
                                //h = GetNextWindow(h, GW_HWNDNEXT);
                                return h;
                        }
                }

                h = GetNextWindow(h, GW_HWNDNEXT);
        }

        return NULL;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 35
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
改成这样了   一次取到正确的窗口句柄
typedef struct tagWNDINFO
{
        DWORD dwProcessId;
        HWND hWnd;
} WNDINFO, *LPWNDINFO;

HWND call_窗口_进程id取窗口句柄(DWORD dwProcessID)
{
        WNDINFO wi;
        wi.dwProcessId = dwProcessID;
        wi.hWnd = NULL;
        EnumWindows(myEnumProc, (LPARAM)&wi);
        return wi.hWnd;
}

BOOL CALLBACK myEnumProc(HWND hWnd, LPARAM lParam)
{
        DWORD dwProcessId;
        GetWindowThreadProcessId(hWnd, &dwProcessId);
        LPWNDINFO pInfo = (LPWNDINFO)lParam;
        if (dwProcessId == pInfo->dwProcessId)
        {
                pInfo->hWnd = hWnd;
                return FALSE;
        }
        return TRUE;
}
2015-12-29 04:28
0
游客
登录 | 注册 方可回帖
返回
//