★★★一百分求解:如何实现同时按下左右两键(两键鼠标)来激活一个事件??

bluebill 2002-09-04 05:00:01
就是当你在窗体上同时按下左右两键,来激活一个事件!
...全文
79 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen22 2002-09-06
  • 打赏
  • 举报
回复
用hook,拦截系统消息.
SnHnBn 2002-09-06
  • 打赏
  • 举报
回复
在你的程序运行时,把桌面替换成你自己的桌面,注意是要用一个HTML文件作为桌面,里面包含的图片连接要跟原来的桌面一样,这样就可以保持外观不变,然后在HTML里用代码接受鼠标事件,然后通过组件转发消息到你的应用程序上就可以了。
zhiboyi 2002-09-06
  • 打赏
  • 举报
回复
晕,不会,学习
bluebill 2002-09-06
  • 打赏
  • 举报
回复
多谢楼上的各位大哥!

我的本意是这样的:

当一个窗体运行时,先让它最小化,然后在桌面上同时按下鼠标左右两个按键,来激活这个窗体使它显示在桌面上。

左右两个键同时在桌面上按下去,就激活一个事件,这种功能怎么实现。
bluebill 2002-09-05
  • 打赏
  • 举报
回复
分不成问题,只要解决了,我可以另外开贴给分的~
bluebill 2002-09-05
  • 打赏
  • 举报
回复
楼上的大哥,能给点代码参考一下吗??
daviddivad 2002-09-05
  • 打赏
  • 举报
回复
判断时间间隔
bluebill 2002-09-05
  • 打赏
  • 举报
回复
多谢楼上的各位大哥!

我的本意是这样的:

当一个窗体运行时,先让它最小化,然后在桌面上同时按下鼠标左右两个按键,来激活这个窗体使它显示在桌面上。
davidwee 2002-09-05
  • 打赏
  • 举报
回复
不对,你是在“桌面”上按键来激活窗体?而不是在窗体上?
如是在窗体上,只要设置两个状态:mousedown时记录bLButton = true(左按下),bRButton = true(右按下),mouseup时bLButton = false(左放), bRButton = false(右放).

这样,在左键按下时,bLButton = true,然后看bLButton and bRButton是否true即可判断两键同时按下否。右键同理。
bluebill 2002-09-05
  • 打赏
  • 举报
回复
再次谢楼上的兄弟,

to: daviddivad(喜欢VB需要理由吗?需要吗?不需要吗?)

如何判断时间间隔呢?再给点提示吧
myhfit 2002-09-05
  • 打赏
  • 举报
回复
你这是用特殊键来充当热键
建议用GetAsyncKeyState
当然如果用MouseDown的话
先设定两个全局变量
dim LDown as boolean
dim RDown as boolean
再判断
Private sub xxx_MouseDown(.....
if button=2 then
if ldown=true then ....
rdown=true
end if
在mouseup中还原
Private sub xxx_MouseUp(.....
ldwon=false
rdown=false
....
Laney 2002-09-04
  • 打赏
  • 举报
回复
你在mouse_down事件中的button的值等于1.2时再触发事件不就行了
WuYL7812 2002-09-04
  • 打赏
  • 举报
回复
Windows 中好像没有两个按键同时按下的消息。只能先生左键按下事件,再生右键按下事件,或反之。
我认为只能判断两键按下的时间间隔来判断用户是否同时按下了左右两键。

愚人的程序如下。

添加两个窗体级布尔变量bleft,bright

先在Form_MouseDown事件中写以下代码
If Button = 1 Then bleft = True
If Button = 2 Then bright = True
If bleft And bright Then
bleft = False
bright = False
MsgBox "You press Left Button and Right Button together"
End If
这是判断两个按键是否分别都已经按下。

然后加一Timer控件,把 Interval 属性设为100,即0.1秒。
在其Timer1_Timer()事件中写
bleft = False
bright = False
如果用户本不想同时按下两键,而是先按下一个键,然后按另一个,在这0.1秒之内是没法完成的。

这样的程序经过试验效果还可以,如果您老人人家认为不妥可以改一下Interval属性试试看。
smilejiangjun 2002-09-04
  • 打赏
  • 举报
回复
好像只能在mousemove事件中
if button=3 then
end if

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧