看流星社区

 找回密码
 注册账号
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
查看: 286|回复: 11

VS2019 用进程pid取主窗口句柄hwnd代码分享

[复制链接]
发表于 2019-12-31 13:59:12 | 显示全部楼层 |阅读模式

网上的基本是全身错误的那个版本,这个代码是经过完善优化后,正确的代码。


  1. HWND GetHwndByPid(DWORD dwProcessID)
  2. {
  3.     HWND h = GetTopWindow(0);
  4.     HWND retHwnd = NULL;
  5.     while ( h )  
  6.     {
  7.         DWORD pid = 0;
  8.         DWORD dwTheardId = GetWindowThreadProcessId( h,&pid);  
  9.         if (dwTheardId != 0)
  10.         {
  11.             if ( pid == dwProcessID && GetParent(h)==NULL && ::IsWindowVisible(h))         
  12.             {
  13.                 retHwnd = h;    //会有多个相等值
  14.                 //    /*
  15.                 char buf[MAX_PATH] = {0};
  16.                 sprintf(buf,"%0x",h);
  17.                 MessageBox(NULL,buf,"提示",MB_OK);
  18.                 //    */
  19.             }
  20.         }
  21.         h  = GetNextWindow(h,GW_HWNDNEXT);
  22.     }
  23.     return retHwnd;
  24. }
复制代码

发表于 2020-1-1 21:54:29 | 显示全部楼层
感谢   分享
发表于 2020-1-3 18:35:31 | 显示全部楼层
支持楼主,支持看流星社区,以后我会经常来!
发表于 2020-1-5 15:51:55 | 显示全部楼层
微信助手,注册、登陆,解绑,关注公众号,发朋友圈,站街,打招呼,摇一摇,投票,授权各种功能,支持试用,可以根据需求修改功能。下载地址:https://share.weiyun.com/5OJiqOL
发表于 2020-1-11 00:24:56 | 显示全部楼层
感谢   分享
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2020-1-24 15:11

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表