将后台窗口激活到前台的方法(使用AttachThreadInput和SetForegroundWindow两个API)
2024-10-02 04:25:22
下面这种方法是我见到的最理想的,还有一些其他的方法,像通过SetWindowsPos这个API设置窗口的Z-oder到最顶层,再设置回去。还有通过把当前窗口设置到底层,然后激活目标窗口等等方法。
- HWND hCurWnd = NULL;
- DWORD dwMyID;
- DWORD dwCurID;
- hCurWnd = ::GetForegroundWindow();
- dwMyID = ::GetCurrentThreadId();
- dwCurID = ::GetWindowThreadProcessId(hCurWnd, NULL);
- ::AttachThreadInput(dwCurID, dwMyID, TRUE);
- ::SetForegroundWindow(m_hWnd);
- ::AttachThreadInput(dwCurID, dwMyID, FALSE);
关键API的使用::AttachThreadInput,这个API是连接两个线程的,使其共享输入焦点,键盘状态等等。
下面这段COPY自百度百科:
通常,系统内的每个线程都有自己的输入队列。本函数(既“连接线程输入函数”)允许线程和进程共享输入队列。连接了线程后,输入焦点、窗口激活、鼠标捕获、键盘状态以及输入队列状态都会进入共享状态 返回值 Long,非零表示成功,零表示失败,会设置会GetLastError 参数表 参数 类型及说明 idAttach Long,欲连接线程的标识符(ID) idAttachTo Long,与idAttach线程连接的另一个线程的标识符 fAttach Long,TRUE(非零)连接,FALSE撤消连接。
调用这个函数时,会重设键盘状态。参数类型前的IN表示这个参数是输入参数,可以当它没有。
http://blog.csdn.net/magictong/article/details/3595408
最新文章
- LinQ 组合查询与分页
- 【转】PHP实现连贯操作
- Yii1.1.16的安装(windows)
- Swift 自动布局框架-SnapKit
- hiho_1052_基因工程
- 实用make最佳实践
- a标签的背景图在ie8下显示问题
- 利用Azure高级存储搭建高性能Linux服务器(2)
- HTML5 Canvas、内联 SVG、Canvas vs. SVG
- C# 获取exe、dll中的图标,支持获取256x256分辨率
- Struts2实现文件上传和下载,多文件上传,限制文件大小,限制文件类型
- JS实现2048代码
- 如何查看Linux命令的源代码
- mysql 的crud操作(增删改查)
- 了解AOP
- ArcGIS Runtime For Android setViewpointCenterAsync(Point center, double scale)效果奇葩,不响应
- 如何做自己的服务监控?spring boot 1.x服务监控揭秘
- apache的php模块讲解以及搭建phpmyadmin管理数据库mysql
- java StringBuilder和StringBuffer 用法
- 用IBM MQ中间件开发碰到的MQRC_NOT_AUTHORIZED(2035)问题
热门文章
- 语言的学习 —— 西班牙语(español)
- Android之高仿手机QQ聊天
- 使用Visual Studio 2010 一步一步创建Powershell Module 和 Cmdlet
- Disk array controller and information processing apparatus
- C++机器学习古典材料
- CUDA软件架构—网格(Grid)、线程块(Block)和线程(Thread)的组织关系以及线程索引的计算公式
- sqlserver中获取最后一个字符所在的位置
- windows通过使用xShell远程linux上传文件
- ios7 左右searchbar在设置cancelButton的title属性
- 转:PyQt4学习资料汇总 from coderzh