注册 登录
编程论坛 VFP论坛

有什么办法让程序缩小到托盘后,检测到用户按了某个按键吗?

琅拿度 发布于 2023-10-17 11:32, 474 次点击
我目前的办法是使用timer

Declare Integer GetAsyncKeyState In user32 Integer vKey
N_key=GetAsyncKeyState(117) && F6
If Type("N_key")="N" And Abs(N_key)>32700    && abs(N_key)一般值为:32767 或 32768,不固定
    messagebox('F6')
Endi

但是,不知道为什么timer在托盘一段时间后(可能是一天两天或几天)会失效,这样就导致timer不工作而无法检测

所以请教大家还有没有其它不使用timer的方法? (不讨论timer失效的问题,它就是失效)


4 回复
#2
iswith2023-10-17 11:43
系统全局热键,你使用timer 带替 do , timer怎么会失效呢?直接用MYFLL不可以?
*-- 表单A Init 事件代码:
Set Library To MyFll

*-- 表单A Resize 事件代码:
If This.WindowState=1 && 最小化
This.Hide && 隐藏表单
SystrayAdd(1,("路径\图标.ico"),This.Caption,"MyForm.Show","MyForm.Show") && 向托盘添加图标
SysTrayShowMessage(1,"可以 双击、右单击 或按 Alt+W 键 还原。","我最小化到托盘了",64) && 显示托盘消息
HotKeyAdd(1,1,Asc('W'),"MyForm.Show") && 向系统注册一个热键 Alt+W
Endif

*-- 表单A Show 方法代码:
Lparameters nStyle
This.Visible=.T.
This.WindowState=0 && 0(普通窗口) 或 2(最大化窗口)
SysTrayDel(1) && 删除系统托盘中的图标
HotKeyDel(1) && 删除添加的热键

*-- 运行表单时
Public MyForm
Do Form 表单A.Scx Name MyForm




[此贴子已经被作者于2023-10-17 12:07编辑过]

#3
琅拿度2023-10-17 18:22
回复 2楼 iswith
只能用组合键吗?

单独一个按键可以吗,比如说 F7 按键?  HotKeyAdd怎么写?
#4
iswith2023-10-17 18:46
看它HotKeyAdd函数说明呀!MYFLL很多年了!
#5
琅拿度2023-10-27 11:31
隐藏托盘后,timer失效,使用hotkey再激活timer,目前解决了问题。好评
1