开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1360|回复: 3
收起左侧

[已解决] 窗口_是否在最顶端 函数功能 BUG 报告

[复制链接]
发表于 2015-1-16 20:52:16 | 显示全部楼层 |阅读模式   四川省宜宾市
本帖最后由 萧阳天 于 2015-1-18 20:13 编辑

  窗口_是否在最顶端  函数有BUG

源码:
当前窗口 = 窗口_取焦点句柄 ()  ' ---> 错误关键所在  窗口_取焦点句柄 ,功能有局限,只能取本进程的焦点句柄,取不了其它进程焦点句柄,焦点在其它进程,本函数就无用了
修改后的 窗口_取焦点句柄 () 函数
.版本 2
.子程序 窗口_取焦点句柄, 整数型, 公开, 取焦点句柄;获得自身拥有输入焦点的窗口句柄
.局部变量 wnd, 整数型
.局部变量 SelfThreadId, 整数型
.局部变量 ForeThreadId, 整数型
.局部变量 附加线程, 逻辑型
' 获取当前具有输入焦点控件的窗口句柄由于GetFocus只能本身进程调用,所以必须调用AttachThreadInput函数附加线程
wnd = 0  ' ;//窗口句柄
wnd = GetForegroundWindow ()  ' //获得当前激活的窗口句柄
SelfThreadId = GetCurrentThreadId ()  ' //获取本身的线程ID
ForeThreadId = GetWindowThreadProcessId (wnd, 0)  ' //根据窗口句柄获取线程ID
.如果真 (ForeThreadId ≠ SelfThreadId)
    AttachThreadInput (ForeThreadId, SelfThreadId, 真)  ' //附加线程
.如果真结束
wnd = GetFocus ()  ' //获取具有输入焦点的窗口句柄
.如果真 (ForeThreadId ≠ SelfThreadId)
    AttachThreadInput (ForeThreadId, SelfThreadId, 假)  ' //取消附加的线程
.如果真结束
' SendMessage(wnd,WM_CHAR,WPARAM('a'),0);//发送一个字消息
返回 (wnd)


需要再增加一个DLL命令
.版本 2
.DLL命令 AttachThreadInput, 整数型, , "AttachThreadInput", , “连接线程输入函数”,返回值 Long,非零表示成功,零表示失败,
    .参数 idAttach, 整数型, , 欲连接线程的标识符(ID),这是源
    .参数 idAttachTo, 整数型, , 与idAttach线程连接的另一个线程的标识符 fAttach Long,这是转移连接到的目标
    .参数 fAttach, 逻辑型, , TRUE(非零)连接,FALSE撤消连接 注销

评分

参与人数 1精币 +3 收起 理由
萧阳天 + 3 感谢你的支持,精易有你更精彩

查看全部评分

 楼主| 发表于 2015-1-17 09:30:58 | 显示全部楼层   四川省宜宾市
上条贴子打字错误,重新发      窗口_取激活句柄   对本线程建立的窗口句柄才有效,是本进程不是本线程的窗口都不能返回预期值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-17 09:27:57 | 显示全部楼层   四川省宜宾市
函数功能注释,在发现了注释不完整的,也希望能补充全面。
比如:窗口_取激活句柄  注释为: 取激活的窗口句柄。  编写了代码调试很久发现结果不对,仔细排查才发现这个函数只对本线程建立的窗口句柄才有效,是本进程还是本线程的窗口都不能返回预期值,因此注注释应该加上:仅对本线程的激活窗口能有效返回句柄值。

. .子程序 窗口_取顶端窗口句柄, 整数型, 公开,   注注释为: 成功返回一个最顶端窗口的句柄 。再补充一完整:取当前操作系统中处于激活状态的窗口句柄,可取其它进程的激活窗口。
如果只看函数的名称, 窗口_取激活句柄   能误导人以为它能取当前系统中处于激活状态的窗口句柄
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-16 20:56:11 | 显示全部楼层   四川省宜宾市
同时建议 模板中源码尽量保量注释或注释清楚,减少一些多余的慢慢理解源码的时间消耗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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