找回密码
 加入
搜索
查看: 22672|回复: 43

[GUI管理] [已解决]如何能使窗口可以响应点击(控件),而窗体不被激活

 火... [复制链接]
发表于 2010-7-26 12:40:54 | 显示全部楼层 |阅读模式
本帖最后由 afan 于 2010-7-27 17:57 编辑

昨天看到这个帖子:小屏幕键盘,有请大虾完善 ,觉得有个问题似乎不好解决,就是在点击小键盘窗口时,它会得到焦点,而目标窗口则会失去焦点,虽说可在之后进行激活处理,但这样就造成了窗体的闪烁。不知有没有办法如windows自带的屏幕键盘那样处理窗口信息,使目标窗体保持激活,或者使某窗体保持不被激活,而能响应点击?(另注:显示窗口时使用 @SW_SHOWNOACTIVATE 可以使窗体在不激活的状态下显示,但不能保持,一旦点击之也就激活了)

打开windows自带的屏幕键盘看看先~
Run(@SystemDir & '\osk.exe')
请教各位看官~ 谢谢~!

已解决~!
强大的P版轻松搞定,详见16#

评分

参与人数 1贡献 +1 收起 理由
lynfr8 + 1 好问题!

查看全部评分

 楼主| 发表于 2010-7-26 14:05:32 | 显示全部楼层
无人关注啊,自己坐沙发~
发表于 2010-7-26 14:09:19 | 显示全部楼层
焦点在目标窗口,小键盘窗口置顶?
不敢妄下定论

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-7-26 14:10:31 | 显示全部楼层
回复 3# 3mile


    小键盘窗口置顶是必须的,但不能被激活~ 打开上面的windows屏幕键盘看看就知道怎么回事了
发表于 2010-7-26 22:00:22 | 显示全部楼层
确实是这样, 顶上去希望更多的人能看到。

评分

参与人数 1金钱 +10 收起 理由
afan + 10

查看全部评分

发表于 2010-7-26 22:43:16 | 显示全部楼层
取得之前的句柄,点击控件之后把焦点切回去?
 楼主| 发表于 2010-7-26 22:44:53 | 显示全部楼层
取得之前的句柄,点击控件之后把焦点切回去?
Ziya 发表于 2010-7-26 22:43



    这就是正常操作的情况,也就因此而会造成一次闪烁
发表于 2010-7-26 23:19:51 | 显示全部楼层
获取焦点是会有一个系统消息的吧?
把这个拦截掉呢?

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-7-26 23:24:49 | 显示全部楼层
回复 8# Ziya


    这个不知道如何拦截,而且不知道拦截后能否继续传递点击控件的消息
发表于 2010-7-27 09:54:47 | 显示全部楼层
本帖最后由 lynfr8 于 2010-7-27 09:57 编辑

使窗口可以响应点击(控件),而窗体不被激活---
我的思路是监控鼠标是否移到GUI屏幕键盘范围内,是则截断鼠标左键点击消息,
不让继续传递点击控件信息,因为如果点击控件的话就会激活GUI屏幕键盘窗口;
那么怎么去响应所点击是屏幕键盘哪一个键呢---
截断左键点击的同时,获取鼠标当前坐标下的控件ID,通过控件ID进行判断发送对应的键盘模拟消息给已激活窗口。

鼠标左键拦截并截断消息继续传递这一方面的资料已经查了不少,尚未找到有效解决方法,等待其他坛友指教下。

评分

参与人数 1金钱 +30 收起 理由
afan + 30 感谢热情关注

查看全部评分

 楼主| 发表于 2010-7-27 09:58:34 | 显示全部楼层
使窗口可以响应点击(控件),而窗体不被激活---
我的思路是监控鼠标是否移到GUI屏幕键盘范围内,是则截断鼠标 ...
lynfr8 发表于 2010-7-27 09:54



    如果能解决拦截点击的消息就好办了,要不怎么弄都会激活它,我也是想了N久不知道如何拦截…
发表于 2010-7-27 10:02:43 | 显示全部楼层
回复 11# afan

通过_WinAPI_SetWindowsHookEx和_WinAPI_CallNextHookEx返回值来截断键盘消息的倒是解决了:

    http://www.autoitx.com/forum.php ... 30&fromuid=1003
发表于 2010-7-27 10:05:00 | 显示全部楼层
http://www.autoitx.com/thread-7092-1-1.html
这位兄弟用hook.dll可以截断键盘和鼠标的组合消息,但是不能就单鼠标消息截断。
 楼主| 发表于 2010-7-27 10:41:23 | 显示全部楼层
回复 13# lynfr8


    看来前辈研究得很深入了,呵呵~
我看了下上面的帖子,还是没有头绪…
点击时不知道是窗口被激活的消息在前还是鼠标单击的消息在前,怎么弄都把窗口给激活了,唉,失败~
发表于 2010-7-27 11:45:22 | 显示全部楼层
毫无疑问这个问题是可以解决的
只是时间问题
我们大家包括其他有兴趣的坛友都继续研究下去
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 16:34 , Processed in 0.188356 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表