你那个是在按钮1获取焦点的情况下按回车键做出反应。
实现你的效果只需要这个改一下按钮的属性就可以了,
我再给你一个真正的注册热键的源码
楼上的是局部热键,我的是全局热键
局部热键只能在程序内使用,也就是说如果你目前的焦点不在程序内,那么是没有用的
全局热键是不管在什么情况下,热键都会生效
可能LZ听不懂,可以自己试试全局热键和局部热键
代码(你只需要在程序主界面放一个标签1就可以了):
版本
2
支持库
shellEx
程序集
窗口程序集1
程序集变量
a
程序集变量
b
子程序
__启动窗口_创建完毕
a
=
注册热键
(_启动窗口取窗口句柄
(),
标签1取窗口句柄
(),
0,
#X键)
'
上面的“#X键”可以换成你想要的键,那个0可以参考子程序的帮助
b
=
注册热键
(_启动窗口取窗口句柄
(),
标签1取窗口句柄
(),
0,
#Y键)
'
这是我故意放上的,用来d出一个信息框,在你的问题里没用
子程序
_标签1_反馈事件,
整数型
参数一,
整数型
参数
参数二,
整数型
如果
(参数一
=
a)
结束
()
'
如果你不想要d出信息框的就直接可以使用“结束()”,“如果”也不用写,这是我为了示范一个标签控制多热键的方法
否则
如果真
(参数一
=
b)
信息框
(“你按了Y”,
0,
)
如果真结束
如果结束
1、首先打开易语言程序,在易语言程序的主界面中加入一个按钮组件 ,一个编辑框组件和一个通用对框框组件。效果如图所示。
2、编辑按钮的属性,将标题更改为获取路径。
3、双击按钮,进入窗口程序集,按快捷键ctrl+l 创建一个变量名称为读入的字节集,类型为字节集。
4、接下来写入如下代码:版本 2通用对话框1类型 = 0如果真 (通用对话框1打开 ())编辑框1内容 = 通用对话框1文件名如果真结束。
5、接下来在主界面点击调试按钮,对功能进行测试,点击获取路径后,会d出选择文件的对话框,这里选择本地的一个文本文档,就可以了。
这是对方的进程,不是本进程,是需要打开进程的
说明一下,GetWindowThreadProcessId获取进程ID
OpenProcess打开进程句柄
ReadProcessMemory 读取某内存空间的值
WriteProcessMemory 将某个值写入到指定的内存空间
CloseHandle关闭进程句柄
如果读内存我不建议你什么十六转十的方式去读,明明就已经知道偏移了,还编写代码再去转一次,不是浪费了那么一点的CPU资源吗
以下是两个读写内存的函数,打不开进程句柄那证明对方进程有保护,如果打得开,读写不了内存
再调用一下VirtualProtectEx函数看看!
版本 2
子程序 读小数, 小数型
参数 窗口句柄, 整数型
参数 内存地址, 整数型
局部变量 hProcess, 整数型
局部变量 dwProcessId, 整数型
局部变量 lpBuffer, 小数型
GetWindowThreadProcessId (窗口句柄, dwProcessId)
hProcess = OpenProcess (2035711, 0, dwProcessId)
ReadProcessMemory (hProcess, 内存地址, lpBuffer, 4, 0)
CloseHandle (hProcess)
返回 (lpBuffer)
子程序 写小数, 逻辑型
参数 窗口句柄, 整数型
参数 内存地址, 整数型
参数 写入的值, 小数型
局部变量 dwProcessId, 整数型
局部变量 hProcess, 整数型
局部变量 ret, 逻辑型
GetWindowThreadProcessId (窗口句柄, dwProcessId)
hProcess = OpenProcess (2035711, 0, dwProcessId)
ret = WriteProcessMemory (hProcess, 内存地址, 写入的值, 4, 0)
CloseHandle (hProcess)
返回 (ret)
版本 2
DLL命令 CloseHandle, 逻辑型, "Kernel32", "CloseHandle"
参数 hObject, 整数型
DLL命令 OpenProcess, 整数型, "kernel32", "OpenProcess"
参数 dwDesiredAccess, 整数型
参数 bInheritHandle, 整数型
参数 dwProcessId, 整数型
DLL命令 GetWindowThreadProcessId, 整数型, "user32dll", "GetWindowThreadProcessId"
参数 hWnd, 整数型
参数 lpdwProcessId, 整数型, 传址
DLL命令 WriteProcessMemory, 逻辑型, "kernel32dll", "WriteProcessMemory"
参数 hProcess, 整数型
参数 lpBaseAddress, 整数型
参数 lpBuffer, 小数型, 传址
参数 nSize, 整数型
参数 lpNumberOfBytesWritten, 整数型
DLL命令 ReadProcessMemory, 逻辑型, "kernel32", "ReadProcessMemory"
参数 hProcess, 整数型
参数 lpBaseAddress, 整数型
参数 lpBuffer, 小数型, 传址
参数 nSize, 整数型
参数 lpNumberOfBytesRead, 整数型
版本 2
支持库 shellEx子程序 __启动窗口_创建完毕注册热键 (取窗口句柄 (), 标签1取窗口句柄 (), 0, #F3键)子程序 _按钮1_被单击如果 (按钮1标题 = “关闭”)
按钮1标题 = “打开”
' 这里写关闭事件
否则
按钮1标题 = “关闭”
' 这里写打开事件
如果结束
子程序 _标签1_反馈事件, 整数型
参数 参数一, 整数型
参数 参数二, 整数型_按钮1_被单击 ()以上是代码,希望可以帮到你
以上就是关于你好,我的易语言程序给一个按钮设置了一个快捷键(回车键),可是运行的时候没反应,请高手指点啊!!全部的内容,包括:你好,我的易语言程序给一个按钮设置了一个快捷键(回车键),可是运行的时候没反应,请高手指点啊!!、怎么在易语言中怎么实现按下某键来结束软件运行、易语言怎么制作“选择路径”按钮等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)