[已解决]如何能使窗口可以响应点击(控件),而窗体不被激活
本帖最后由 afan 于 2010-7-27 17:57 编辑昨天看到这个帖子:小屏幕键盘,有请大虾完善 ,觉得有个问题似乎不好解决,就是在点击小键盘窗口时,它会得到焦点,而目标窗口则会失去焦点,虽说可在之后进行激活处理,但这样就造成了窗体的闪烁。不知有没有办法如windows自带的屏幕键盘那样处理窗口信息,使目标窗体保持激活,或者使某窗体保持不被激活,而能响应点击?(另注:显示窗口时使用 @SW_SHOWNOACTIVATE 可以使窗体在不激活的状态下显示,但不能保持,一旦点击之也就激活了)
打开windows自带的屏幕键盘看看先~Run(@SystemDir & '\osk.exe')请教各位看官~ 谢谢~!
已解决~!
强大的P版轻松搞定,详见16# 无人关注啊,自己坐沙发~ 焦点在目标窗口,小键盘窗口置顶?
不敢妄下定论 回复 3# 3mile
小键盘窗口置顶是必须的,但不能被激活~ 打开上面的windows屏幕键盘看看就知道怎么回事了 确实是这样, 顶上去希望更多的人能看到。 取得之前的句柄,点击控件之后把焦点切回去? 取得之前的句柄,点击控件之后把焦点切回去?
Ziya 发表于 2010-7-26 22:43 http://www.autoitx.com/images/common/back.gif
这就是正常操作的情况,也就因此而会造成一次闪烁 获取焦点是会有一个系统消息的吧?
把这个拦截掉呢? 回复 8# Ziya
这个不知道如何拦截,而且不知道拦截后能否继续传递点击控件的消息 本帖最后由 lynfr8 于 2010-7-27 09:57 编辑
使窗口可以响应点击(控件),而窗体不被激活---
我的思路是监控鼠标是否移到GUI屏幕键盘范围内,是则截断鼠标左键点击消息,
不让继续传递点击控件信息,因为如果点击控件的话就会激活GUI屏幕键盘窗口;
那么怎么去响应所点击是屏幕键盘哪一个键呢---
截断左键点击的同时,获取鼠标当前坐标下的控件ID,通过控件ID进行判断发送对应的键盘模拟消息给已激活窗口。
鼠标左键拦截并截断消息继续传递这一方面的资料已经查了不少,尚未找到有效解决方法,等待其他坛友指教下。 使窗口可以响应点击(控件),而窗体不被激活---
我的思路是监控鼠标是否移到GUI屏幕键盘范围内,是则截断鼠标 ...
lynfr8 发表于 2010-7-27 09:54 http://www.autoitx.com/images/common/back.gif
如果能解决拦截点击的消息就好办了,要不怎么弄都会激活它,我也是想了N久不知道如何拦截… 回复 11# afan
通过_WinAPI_SetWindowsHookEx和_WinAPI_CallNextHookEx返回值来截断键盘消息的倒是解决了:
http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&ptid=12977&pid=136630&fromuid=1003 http://www.autoitx.com/thread-7092-1-1.html
这位兄弟用hook.dll可以截断键盘和鼠标的组合消息,但是不能就单鼠标消息截断。 回复 13# lynfr8
看来前辈研究得很深入了,呵呵~
我看了下上面的帖子,还是没有头绪…
点击时不知道是窗口被激活的消息在前还是鼠标单击的消息在前,怎么弄都把窗口给激活了,唉,失败~ 毫无疑问这个问题是可以解决的
只是时间问题
我们大家包括其他有兴趣的坛友都继续研究下去