tag: 激活无焦点窗口

转自:http://blog.csdn.net/abcpanpeng/archive/2009/12/29/5099580.aspx

1、不同线程的处理方法

如何在2K/xp下使窗口获取焦点

//捕捉并设置当前焦点窗口为我们的窗口
AttachThreadInput(
    GetWindowThreadProcessId(
        ::GetForegroundWindow(),NULL),
    GetCurrentThreadId(),TRUE);

//置我们的为焦点窗口
SetForegroundWindow();
SetFocus();

//释放thread
AttachThreadInput(
    GetWindowThreadProcessId(
        ::GetForegroundWindow(),NULL),
    GetCurrentThreadId(),FALSE);
2、同线程下的窗口无焦点弹出的方法
在windows的窗口系统中,popup窗口的焦点是与它的活动状态密切相关的。只要使  
popup窗口不获得活动状态,popup窗口就不会自动获得焦点。具体方法如下:  
1.   在创建popup窗口时不要有WS_VISIBLE风格,然后调用SetWindowPos函数显示  
创建的窗口,参数uFlag取值SWP_SHOWWINDOW     and     SWP_NOACTIVATE,这样就可以保证  
窗口在创建是不会得到活动状态,也就不会获得焦点。  
2.   响应WM_MOUSEACTIVATE消息,返回MA_NOACTIVATE表示窗口在鼠标点击时不需要  
获得活动状态,这样就可以保证在鼠标点击时窗口不会自动获得焦点。  
至于鼠标输入的响应,本就与窗口是否获得焦点无关,不会受到影响。

///
其他方法:

1.
::ShowWindow(m_hWnd, SW_SHOWNORMAL);
::SetForegroundWindow(m_hWnd);

曾经成功,但后来又不行,不知道为什么

2.SwitchToThisWindow

失败

3.
SetWindowPos(htop,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE&brvbarSWP_NOSIZE);
ShowWindow(m_hWnd,SW_SHOW);
SetForegroundWindow(m_hWnd);
SetActiveWindow(m_hWnd);
SetFocus(m_hWnd);

获取不到焦点

在2K/XP下我们可以用 AttachThreadInput 和SetForegroundWindow来有效的获取焦点。

转自:http://blog.sina.com.cn/s/blog_4ed1e0e40100g8ag.html

今天碰到一个问题:如何在程序A中模拟Tab按键消息发送给前台窗口(foreground window)?

正常情况在对话框程序中,用户敲击Tab键后,窗体会收到WM_KEYDOWN消息,wParam为VK_TAB,而MSG结构中的hwnd则为上一个拥有键盘焦点的控件的窗口句柄。

在程序A中获取前台窗口是件容易的事,GetForegroundWindow就OK了。如何获得前台窗口上当前拥有键盘焦点的控件的窗口句柄呢?

获取拥有键盘焦点的窗口的句柄,可以用GetFocus。但是,看看MSDN中关于GetFocus的说明,有这么一句:TheGetFocus function retrieves the handle to the window that has the keyboard focus, if the window is attached to the calling thread's message queue. 前半句好理解,正是我们想要的。可是,后面有个“但是”——如果窗口贴附到(attached to)调用线程的消息队列。

这个“但是”很要命,因为前台窗口显然没有贴附到程序A的调用线程的消息队列中。怎么办?

幸好Windows为我们提供了AttachThreadInput,它可以将一个线程的输入处理机制贴附到另一个线程。这样我们就有了下面的代码:
// 获取创建前台窗口的线程
DWORD dwThread = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
// 将前台窗口线程贴附到当前线程(也就是程序A中的调用线程)
AttachThreadInput(dwThread, GetCurrentThreadId(), TRUE);
// 获取焦点窗口句柄
HWND hFocus = GetFocus();
// 解除贴附
AttachThreadInput(dwThread, GetCurrentThreadId(), FALSE);
// 发送消息
PostMessage(hFocus, WM_KEYDOWN, VK_TAB, 0);

无焦点显示窗口解决方法 [转]AttachThreadInput的用法相关推荐

  1. [转]无焦点显示窗口解决方法 [转]AttachThreadInput的用法

    tag: 激活无焦点窗口 转自:http://blog.csdn.net/abcpanpeng/archive/2009/12/29/5099580.aspx 1.不同线程的处理方法 如何在2K/xp ...

  2. (转)无焦点显示窗口解决方法

    原文链接:http://blog.csdn.net/abcpanpeng/archive/2009/12/29/5099580.aspx 1.不同线程的处理方法 如何在2K/xp下使窗口获取焦点 在2 ...

  3. Windows远程桌面(mstsc) 无法全屏显示的解决方法

    目录 问题描述 解决方法 问题解决 问题描述 我们通过mstsc远程登录windows服务器时,远程登录的桌面无法全屏显示,这样操作起来特别不方便,还需要滚动条来处理远程的屏幕,极易操作误操作. wi ...

  4. VMware中linux虚拟机无法全屏显示的解决方法(1080P分辨率调节)

    VMware中linux虚拟机无法全屏显示的解决方法(1080P分辨率调节) 参考文章: (1)VMware中linux虚拟机无法全屏显示的解决方法(1080P分辨率调节) (2)https://ww ...

  5. win10网线插上显示的ipv6的服务器,win10如何开启IPV6及WIN10无法上ipv6的解决方法

    提示:本文基于Teredo隧道开启IPv6,其他开启IPv6的方法暂待完善.特别重要:找到 网络和共享中心 - 更改适配器设置 - 本地连接(无线网络则找到WLAN或蓝牙网络连接)- 属性,把 IPv ...

  6. 打开任意窗口之后,电脑下方任务栏无法显示,解决方法:

    打开任意窗口之后,电脑下方任务栏无法显示,解决方法: 打开窗口之后在电脑下方任务栏显示不出来?怎么解决呢?下面就给大家讲解方法 鼠标右键点击下方的任务栏,如图所示,选择属性 然后弹出如图所示的窗口 然 ...

  7. win10不显示手机连接到服务器,手机连接win10系统热点显示无互联网连接的解决方法...

    在笔记本电脑中,可以通过wifi共享热点给手机共享上网,阿然而近日有不少win10系统用户发现手机连接热点的时候,显示无互联网连接,虽然连接上了wifi但是没有显现网络,遇到这样的情况如何解决,本文就 ...

  8. 移动硬盘电脑计算机无显示,移动硬盘在电脑上不显示的解决方法

    移动硬盘在电脑上不显示怎么办?下面电脑高手网小编给大家分享一篇移动硬盘在电脑上不显示的解决方法介绍,希望可以给大家一些帮助或建议. 移动硬盘在电脑上不显示的解决方法: 右键单击"计算机&qu ...

  9. 惠普elitebook笔记本u盘显示无访问权限的解决方法

    惠普elitebook笔记本u盘显示无访问权限的解决方法 在插入u盘后,右下角会出现一个提示进行设备验证的框,点进去输入电脑密码,解决了.(惠普自带防护软件的锅)

最新文章

  1. 如何量化医学图像分割中的置信度?
  2. Jquery入门详解
  3. 在visualstudio中使用Qt
  4. JS获取字符串实际长度!
  5. python用电度数设计_Python时间序列预测实战(电力负荷预测)
  6. iOS之设置用户头像的圆角
  7. (模板)网页游戏用的“内容区”的“图赏影音”模板
  8. java 单行文本_Java Swing界面编程(17)---单行文本输入组件:JTextField
  9. 读WebTrends的Javascript源码笔记
  10. word写文章 格式总是对不齐 一定要看 解决99%问题
  11. SDN核心技术与内容
  12. 深入学习ElasticSearch(四)——mapping的详细讲解
  13. 同事是竞合关系不是零和关系
  14. ShowWindow 显示窗口
  15. Hyperledger04
  16. c语言10迷宫,C语言实现走迷宫
  17. Android开发-基本概念小整理(四)为了面试的小伙伴们所准备~~
  18. matlab怎么定义矩阵变量_MATLAB符号计算(收藏版)
  19. 台达PLC伺服追剪程序,电子凸轮,全部源代码,PLC程序和触 摸屏程序,DVP15MC。
  20. BUUCTF-Crypto-Quoted-printable题解

热门文章

  1. docker安装指定版本
  2. Uniapp选项卡切换(有图示例)
  3. webservice到底是什么
  4. 解析大数据时代的机器人文明
  5. Linux系统中的以太网连接
  6. Matplotlib--用Python创建各种数据可视化图形
  7. 小功能实现(四)使用easyExcel将ArrayList<HashMap>类型的数据导出Excel表
  8. 华为在发布会带来了harmonyos,华为HarmonyOS 2.0正式发布 使能全场景智慧生态
  9. 小区业主入户安检小程序开发
  10. 剑与契约获取不了服务器信息,剑与契约手游进不去怎么回事 游戏进不去解决方法...