开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 24392|回复: 17
收起左侧

[已解决] 怎么样注册使用全局热键呢?

 关闭 [复制链接]
结帖率:67% (4/6)
发表于 2011-10-12 01:17:28 | 显示全部楼层 |阅读模式   上海市上海市
2精币
怎么样注册全局热键呢?不要模块噢。如题,另外对于易语言中的默认热键,比如在按钮标题后面加(&F),就是使用ALT+F作为热键,那么没有办法不用alt改用ctrl或shift之类的呢?

最佳答案

查看完整内容

[e].版本 2 .子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用 卸载 () .子程序 注册, 整数型, 公开, 注册一个全局热键. (成功返回热键ID,失败返回0) .参数 窗口句柄, 整数型, , 通常为 取窗口句柄() .参数 功能键, 整数型, 可空, 1 Alt 2 Ctrl 4 Shitf 8 Win 若要两个或以上的状态键按则把它们的值相加. .参数 键代码, 整数型 .参数 子程序指针, 子程序指针, , 响应热键事件的子程序指针,四个参数(窗 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:70% (33/47)

签到天数: 10 天

发表于 2011-10-12 01:17:29 | 显示全部楼层   广东省东莞市
[e].版本 2

.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用


卸载 ()


.子程序 注册, 整数型, 公开, 注册一个全局热键. (成功返回热键ID,失败返回0)
.参数 窗口句柄, 整数型, , 通常为    取窗口句柄()
.参数 功能键, 整数型, 可空, 1 Alt  2 Ctrl  4 Shitf  8 Win 若要两个或以上的状态键按则把它们的值相加.
.参数 键代码, 整数型
.参数 子程序指针, 子程序指针, , 响应热键事件的子程序指针,四个参数(窗口句柄,消息786,热键ID,参数)
.局部变量 临时, dnjutby
.局部变量 n, 整数型

.计次循环首 (取数组成员数 (nmu6jry), n)
    .如果真 (nmu6jry [n].一般键 = 键代码 且 nmu6jry [n].功能键状态 = 功能键)
        nmu6jry [n].一般键 = -1  ' 清除响应条件
        _撤消热键钩子 (nmu6jry [n].窗口句柄, nmu6jry [n].热键ID)
    .如果真结束

.计次循环尾 ()

.如果真 (_注册热键 (窗口句柄, gfdhtyh65 + 1, 功能键, 键代码) ≠ 0)  ' RegisterHotKey返回的并不是热键的ID
    gfdhtyh65 = gfdhtyh65 + 1  ' 热键的ID也等于热键的数量.
    临时.窗口句柄 = 窗口句柄
    ' 这两个成员在这里没有太大用处,可以在自定义数据类型里删除这两成员----------------------
    临时.功能键状态 = 功能键
    临时.一般键 = 键代码
    ' -------------------------------------------------------------------------------------
    临时.热键ID = gfdhtyh65
    临时.处理热键子程序 = 子程序指针
    加入成员 (nmu6jry, 临时)
    .如果真 (gfdhtyh65 = 1)
        bt5h5h = 窗口句柄
        v3g53g = _设置窗口特征 (窗口句柄, -4, &sh7trysw)
    .如果真结束
    返回 (gfdhtyh65)
.如果真结束
返回 (0)


.子程序 撤销, 整数型, 公开, 撤销指定热键 (成功返回非0,失败返回0)
.参数 窗口句柄, 整数型
.参数 HotKeyID, 整数型
.局部变量 n, 整数型

.计次循环首 (取数组成员数 (nmu6jry), n)
    .如果真 (HotKeyID = nmu6jry [n].热键ID)
        nmu6jry [n].一般键 = -1  ' 清除响应条件
    .如果真结束

.计次循环尾 ()
返回 (_撤消热键钩子 (窗口句柄, HotKeyID))


.子程序 卸载, , 公开, 撤销所有热键并卸载,该命令会在本类销毁时自动被调用
.局部变量 n, 整数型

.计次循环首 (取数组成员数 (nmu6jry), n)
    _撤消热键钩子 (nmu6jry [n].窗口句柄, nmu6jry [n].热键ID)
.计次循环尾 ()
gfdhtyh65 = 0
重定义数组 (nmu6jry, 假, 0)
_设置窗口特征 (bt5h5h, -4, v3g53g)  ' 还原窗口过程函数

[/e]

全局热键源码

另外个问题的源码例子
[e].版本 2
.支持库 shellEx

.程序集 窗口程序集1
.程序集变量 s, 整数型

.子程序 _按钮1_被单击

信息框 (“按钮1”, 0, )

.子程序 __启动窗口_创建完毕

s = 注册热键 (取窗口句柄 (), 标签1.取窗口句柄 (), 1, #A键)

.子程序 _标签1_反馈事件, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型

_按钮1_被单击 ()

.子程序 __启动窗口_将被销毁

撤销热键 (_启动窗口.取窗口句柄 (), s)
[/e]

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^.

查看全部评分

回复

使用道具 举报

结帖率:67% (4/6)
 楼主| 发表于 2011-10-12 01:48:15 | 显示全部楼层   上海市上海市
拒绝再玩 发表于 2011-10-12 01:36
全局热键源码

另外个问题的源码例子

这么晚还没有睡啊?非学感谢,不过本人一时还没有看明白?感觉你的源码中好像有乱码的现象,比如“nmu6jry”“dnjutby”这些是什么啊?还是因为我没有加载哪个支持库呢?请回答下,我明天一早会再来看的,谢谢!
回复

使用道具 举报

发表于 2011-10-12 01:51:07 | 显示全部楼层   浙江省宁波市
上面源码是某个模块的 不是乱码,不过看着像
回复

使用道具 举报

结帖率:70% (33/47)

签到天数: 10 天

发表于 2011-10-12 02:46:07 | 显示全部楼层   广东省东莞市
模块源码-热键类.rar (3.09 KB, 下载次数: 820)
回复

使用道具 举报

结帖率:67% (4/6)
 楼主| 发表于 2011-10-12 08:25:47 | 显示全部楼层   上海市上海市
拒绝再玩 发表于 2011-10-12 02:46
全局热键模块源码 不要模块可以自己把源码弄到程序里面。。
从supe.r ..模块里面抄出来的

很感谢,但是我居然用不上,可能是基础太差了吧,能不能给个来个简单的例程,比如注册一个全局热键相当于单击某个按钮,稍加举例就可以,谢谢了。
回复

使用道具 举报

结帖率:67% (4/6)
 楼主| 发表于 2011-10-12 19:39:09 | 显示全部楼层   上海市上海市
谁帮我写个例程看看啊,我好关帖子啊。
回复

使用道具 举报

结帖率:100% (11/11)

签到天数: 25 天

发表于 2011-10-12 21:40:07 | 显示全部楼层   浙江省嘉兴市
QQ截图20111012213842.jpg 按下CTRL+F1 执行子程序1
回复

使用道具 举报

结帖率:67% (4/6)
 楼主| 发表于 2011-10-13 08:10:07 | 显示全部楼层   上海市上海市
本帖最后由 botong 于 2011-10-13 08:29 编辑
qq793359277 发表于 2011-10-12 21:40
按下CTRL+F1 执行子程序1


终于找到问题了,原来我想注册的热键是F12,所以运行了按F12无反应,我换成F11就可以了,为什么F12不可以呢?
另外楼上的标识文本是什么含义啊?
另外如果我要直接全用上面提供的全局热键呢,就是不编译成模块,怎么使用呢?{dnjutby是什么数据类型啊?nmu6jry这个数组是在哪里定义的啊?}
回复

使用道具 举报

结帖率:35% (7/20)
发表于 2011-10-13 08:35:06 | 显示全部楼层   河北省张家口市
标识文本 一般不用理它,随便写一个就行,但是不能重复。把F1换成F12就可以了,可以运行的
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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