EnumWindows枚举屏幕上的所有顶层窗口,不包括子窗口
BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);
第一个参数是WNDENUMPROC类型的回调函数,每个枚举窗口都会被调用一次,而且会把窗口的句柄作为参数传给该回调函数,如果该回调函数返回FALSE则停止枚举
第二个参数可以传入我们自定义的数据,这里传入一个包含进程号和窗口句柄的结构,进程号假设已经获取到,在找到该进程号对应的窗口时将窗口句柄赋值给该结构的句柄变量
回调函数的形式
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);
第一个参数为窗口句柄,第二个参数是传给EnumWindows的lParam参数

struct ProcessWindowData
{HWND hWnd;unsigned long lProcessId;
};BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{ProcessWindowData& wndData = *(ProcessWindowData*)lParam;unsigned long lProcessId = 0;::GetWindowThreadProcessId(hWnd, &lProcessId);if ((wndData.lProcessId != lProcessId) || (::GetWindow(hWnd, GW_OWNER) != (HWND)0) || !::IsWindowVisible(hWnd)){return TRUE;}wndData.hWnd = hWnd;return FALSE;
}HWND GetMainWindowHwnd(unsigned long lProcessId)
{ProcessWindowData wndData;wndData.hWnd = 0;wndData.lProcessId = lProcessId;::EnumWindows(EnumWindowsProc, (LPARAM)&wndData);return wndData.hWnd;
}

如果要枚举指定桌面的窗口可以使用EnumDesktopWindows

根据进程id获取主窗口句柄相关推荐

  1. 进程相关(进程Id获取主窗口)

    1.知道进程handle 获取进程名称. PROCESS_INFORMATION* processInfo =(PROCESS_INFORMATION*)pid();    HANDLE hProce ...

  2. 通过Windows进程ID获取窗口句柄

    通过Windows进程ID获取窗口句柄 方法一:使用EnumWindows的方式 ///< 枚举窗口参数 typedef struct { HWND hwndWindow; // 窗口句柄 DW ...

  3. C++ 遍历寻找指定进程,通过进程ID获取窗口句柄,以及HWND与CWnd之间转换

    问题: 如题,如何遍历寻找指定进程?如何通过进程ID获取窗口句柄?HWND与CWnd之间是如何转换的? 解决: 1.HWND与CWnd之间的转换:使用 GetSafeHwnd 和 CWnd::From ...

  4. VC下通过进程ID获取进程镜像文件路径的方法及其存在的缺陷

    工作中经常会遇到通过进程ID获取进程镜像文件或者其他模块的路径的需求.(转载请指明出处)网上关于方案大致存在两种方案: OpenProcess->GetModuleFileName OpenPr ...

  5. C++/C#通过进程ID查找对应窗口句柄

    新任务,要打开设置页面,并移动到指定位置,并设定窗口大小. 打开设置和移动窗口是非常简单,直接用ShellExecute和MoveWindow就可以了,上代码: using System; using ...

  6. 通过进程ID获取基地址

    From: http://blog.csdn.net/firefoxbug/article/details/7201351 下面代码是通过进程ID来获取进程的基地址,创建一个进程快照后,读取进程模块, ...

  7. VC由进程ID获取窗口句柄的各种方

    //ID--HANDLE--HWND三者之间的互相转换 //id->句柄     hWnd = ::GetDlgItem(hParentWnd, id); //id->指针     CWn ...

  8. C# 获得窗体句柄并发送消息(利用windows API可在不同进程中获取)

    C#使用Windows API获取窗口句柄控制其他程序窗口 编写程序模拟鼠标和键盘操作可以方便的实现你需要的功能,而不需要对方程序为你开放接口.比如,操作飞信定时发送短信等.我之前开发过飞信耗子,用的 ...

  9. linux获取控制台窗口句柄,C#获取控制台句柄的方法

    1.创建类User32API.cs,代码如下: using System; using System.Collections.Generic; using System.Linq; using Sys ...

最新文章

  1. FPGA技术的未来发展:谁与AI平分秋色
  2. php 实现联想式 搜索,PHP实现搜索联想功能(基于字典树算法)
  3. html 的empty属性,你未必知道的CSS小知识:你知道table里的empty-cells属性吗?
  4. C++学生信息管理系统V1(课后作业)
  5. vb6 设计模式 mscomm该部件的许可证信息没有找到_廊坊人脸识别系统报价,塔机黑匣子,供求信息...
  6. Python_list部分功能介绍
  7. 贪心只能过样例 loj515
  8. 微型计算机键盘上的西服的间称为,一台完整的微型计算机主要由主机箱. .键盘.鼠标及音箱.打印机组成....
  9. JAVA中String类
  10. bzoj1853: [Scoi2010]幸运数字 dp+容斥原理
  11. Android之ViewStub的简单使用
  12. jrtplib使用笔记
  13. 飞鸽传书2007绿色版下载
  14. PHP资源汇总-内容包括模板、框架、数据库、安全等方面的库和工具
  15. 贪心 :PIPI渡江
  16. DM642的PCI驱动编程笔记:遍历一块内存空间的源码
  17. 保存二维码图片到手机相册
  18. Ubuntu16.04成功解决InvalidSpecError: Invalid spec: =2.7!!!
  19. java 甘特图_甘特图(Gantt chart)深度解析
  20. php intval 四舍五入,PHP与JS---取整数方法int,celi,floor,round 收藏

热门文章

  1. GbcJoy - android上的GBC模拟器
  2. Robustness(健壮性)和 Correctness(正确性)
  3. iOS培训之iOS 8正式发布:增加多个新功能
  4. Python学习,python中socket解读
  5. 自制pixhawk电脑不识别com口
  6. 2000元以下高性价比800万像素相机推荐
  7. 详解usbmon抓取的log各字段的含义
  8. 解决java以UTF-8输出中文时,Excel打开多语言文件乱码但是记事本打开却正常的问题
  9. jq 批量删除 php,PHP基础班初学心得:用JQ实现表单的全选、反选、取消和删除功能...
  10. Oracle 11g新特性之缓存与连接池