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. OpenCL通用异构开放环境
  2. 最小生成树之prim算法
  3. Python学习6 字典基础知识和常用函数
  4. 编辑中的word变成只读_文档设定密级,word中是这样加密,看一篇就精通了
  5. django的配置文件字符串是怎么导入的?
  6. 基于扩展性考虑,不同场景选择的不同方案
  7. 按键精灵q语言连接mysql_【按键精灵8】Q语言介绍
  8. 腾讯视频国际版(Android)电量测试方法研究与总结
  9. EXCEL,去掉1列中的重复数据的 公式方法
  10. Composer Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist
  11. 探索跨平台应用开发的最佳实践
  12. 将文件目录生成文档目录或者excel目录
  13. 数据结构:单链表中在P结点前插入S结点
  14. WinCC 7.3 + SQL server(杂)
  15. ARCGIS格式转CAD时保留其图层、高程及颜色的方法
  16. 纯硬件无人直播手机,不需要电脑,不需要虚拟摄像头,可人工干预、可粉丝互动,半无人直播
  17. 地理学(第一、第二)定律
  18. FPGA实现SD卡音乐播放
  19. php文件批量改名,php批量重命名_PHP教程
  20. 重磅发布:阿里云服务器安全(安骑士)日志 - 实时分析

热门文章

  1. 日本产品的低成本,德国产品的稳定性,美国产品的先进性,是我们赶超的基准。
  2. python画棒棒糖程序_用python 画几个简单图案
  3. QGIS 3.10 栅格样式与栅格分析
  4. matlab中.2表示,在MATLAB中,命令“zero(2)”表示()
  5. 全民K歌---PYTHON---下载歌曲第二弹
  6. 360集团算法工程师校招面经
  7. 字符串反转(C语言)
  8. Shiro权限管理详解(授权和注解开发)【面试点】
  9. VS2010下载|官网|Microsoft Visual Studio 2010 (VS2010)旗舰版下载地址
  10. 首个逗号去除,string转数组,数组转list。list转String