http://simpleease.blog.163.com/blog/static/1596085820052770290/

要枚举Windows当前所有打开的顶层窗口,可使用Windows API函数EnumWindows():
                BOOL EnumWindows( WNDENUMPROC lpEnumFunc,  LPARAM lParam);

具体使用方法如下所示(将指定ProcessID的进程对应窗口置于前台):

BOOL CALLBACK EnumWindows_SetForegruond_Proc(HWND hwnd, LPARAM lParam)
        {
                DWORD dwPID = 0;
                GetWindowThreadProcessId(hwnd, &dwPID);
                if(dwPID == (DWORD)lParam)
                {
                       ::SetForegroundWindow(hwnd);
                       ::ShowWindow(hwnd, SW_SHOWNORMAL);
                       return FALSE;
                }
                return TRUE;
        }//~End of EnumWindows_SetForegruond_Proc()

......
        //以下hProcess为指定窗口的进程句柄HANDLE
        DWORD dwPID = GetProcessId(hProcess);
        EnumWindows(EnumWindows_SetForegruond_Proc, dwPID);

但是使用上面方法似乎也有个小问题。例如我的HANDLE是通过执行ShellExecuteEx(...)获得的,上面代码虽然执行了EnumWindows_SetForegruond_Proc(),但是并没有将窗口置于前台(好像是因为找不到值为dwPID的进程ID)?而在调试模式下,再执行调用 EnumWindows(EnumWindows_SetForegruond_Proc, dwPID)之前加入一个断点,一步一步执行,操作就成功了!为何?问题待解决ing......

jpg改rar
 

使用API函数EnumWindows()枚举顶层窗口的更多相关文章

  1. 在C#中调用Win32函数EnumWindows枚举所有窗口。

    原文 http://www.cnblogs.com/mfm11111/archive/2009/06/30/1514322.html 开发旺旺群发软件,难点及重要技术点分析(一) 一.        ...

  2. C#调用API函数EnumWindows枚举窗口的方法

    原文 http://blog.csdn.net/dengta_snowwhite/article/details/6067928 与C++不同,C#调用API函数需要引入.dll文件,步骤如下: 1. ...

  3. 实现:调用API函数ShowWindow()来隐藏窗口

    只需要将相应代码复制即可. 代码如下: #include <iostream> #include <windows.h> int main() { HWND hDos; //声 ...

  4. Vb.net/VB 声明API函数实现父窗口功能

    回想第一次敲机房收费.自己调用了api函数实现了父窗口及其子窗口最小化的功能.现在再次遇到,自己就在思考,能不能继续使用API函数呢?答案当然是Of Course! 事实上细致看两者并没有多大的差别. ...

  5. Windows API 编程----EnumWindows()函数的用法

    1. 函数原型: BOOL WINAPI EnumWindows( _In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam); lpEnumFunc: 应用程序 ...

  6. 调用API函数,在窗口非客户区绘图(通过GetWindowDC获得整个窗口的DC,就可以随意作画了)

    http://hi.baidu.com/3582077/item/77d3c1ff60f9fa5ec9f33754 调用API函数,在窗口非客户区绘图 GDI+的Graphics类里有个FromHdc ...

  7. 枚举子窗口EnumChildWindows()的应用

    1.EnumChildWindows()函数的作用枚举子窗口(按顺序调用回调函数,并将子窗口的句柄传递给了回调函数).函数原型: BOOL WINAPI EnumChildWindows( HWND ...

  8. C# 窗体常用API函数 应用程序窗体查找

    常用的处理窗体的API函数如下(注意:API函数必须放在窗体中...): 使用C#语言,要引用DllImport,必须要添加using System.Runtime.InteropServices命名 ...

  9. Windows API 函数列表 附帮助手册

    所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...

随机推荐

  1. 第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中

    第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详 ...

  2. redis实现区间查询

    ###redis实现区间查询 在实际开发中经常遇到这样需求:服务端对于客户端不同的版本区间会做些不同的配置,那么客户端一个版本过来怎么快速的定位是属于哪个版本区间呢?可以利用`Sorted Sets` ...

  3. Mybatis trim标签

      trim代替where/set标签 trim 是更灵活用来去处多余关键字的标签,它可以用来实现 where 和 set 的效果. <!-- 使用 if/trim 代替 where(判断参数) ...

  4. 事件的监听是由awt完成的

    学swing 之前先学awt ,因为awt 是Java实现图形界面的基础. 它能够完成编写界面的基本功能,最重要的是,事件的监听是由awt完成的. 而swing是在awt基础上提供的新的界面工具包,它 ...

  5. JS 在火狐浏览器下关闭弹窗

    1.首先,要确定火狐设置是否允许通过JS代码window.close()方法关闭标签. 确定方式如下:      在Firefox地址栏里输入 about:config    在配置列表中找到dom. ...

  6. Yii2查询之where条件拼装

    目录 1 语法 2 哈希格式 3 运算符格式 3.1 对比 3.2 and 3.3 or 3.4 not 3.5 between和not between 3.6 in和not in 3.7 like ...

  7. JSTL SQL标签库 使用

    推荐博客:http://blog.sina.com.cn/s/blog_4f925fc30101820u.html 怕博主把原文删了,所以在这里先保存一下. SQL标签库 JSTL提供了与数据库相关操 ...

  8. C++入门学习

    使用cout和cin,需要包括C++提供的输入输出库.#include <iostream>    标准输入输出头文件 <string>        using namesp ...

  9. bash: /usr/bin/npm: No such file or directory

    一个整得很烂了的Ubuntu服务器, 各种问题乱出. npm老是升不到最新版(一直显示1.4),于是我干脆删了, 结果再去装却装不上了, 如果用apt-get install npm安装, 就得到如下 ...

  10. git statsh命令报错解决

    git stash命令主要用于当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了commit原分支的代码改动的方法外,提供暂存代码的方式. git stash命令参考这篇:ht ...