| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4684 人关注过本帖
标题:关于shift 键的“键盘”虚拟按键
只看楼主 加入收藏
琅拿度
Rank: 1
等 级:新手上路
帖 子:166
专家分:5
注 册:2016-4-7
收藏
得分:0 
顶啊,搞不定,实验现状:

实验1:组合键使用,达不到想要的效果,这个的目的是:选择本行光标位置到句末的文本内容。实际得到的结果只是光标移到了最后。
keybd_event(VK_SHIFT,0, 0, 0)       && SHIFT + END
keybd_event(VK_END, 0, 0, 0)
keybd_event(VK_END, 0, 2, 0)
keybd_event(VK_SHIFT, 0, 2, 0)

实验2:
keybd_event(VK_SHIFT,0, 0, 0)       && SHIFT 按下
这时如果人工按一次end键,可以达到选择本行光标位置到句末的文本内容的目的,说明keybd_event(VK_SHIFT,0, 0, 0)   还是起作用的。

目前疑问:虚拟组合键是无效的,但是虚拟单个按键是有效的,其它键的虚拟组合也是有效的,只是shift这个键的组合没效果。

2017-06-27 13:21
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
Keyboard "{Shift+End}"  && SHIFT + END

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2017-06-27 15:08
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:20 
用 SPY++ 测试,第二个参数不是 0
用下面的代码试试看
管用吗???

Declare keybd_event In user32 Integer, Integer,Integer,Integer

KEYEVENTF_EXTENDEDKEY = 0x01
KEYEVENTF_KEYUP = 0x02
VK_SHIFT = 0x10
VK_END = 0x23

=keybd_event(VK_SHIFT, 0x2A ,0, 0)
=keybd_event(VK_END, 0x4F, KEYEVENTF_EXTENDEDKEY, 0)
=keybd_event(VK_END, 0x4F, KEYEVENTF_EXTENDEDKEY, 0)
=keybd_event(VK_SHIFT, 0x2A, KEYEVENTF_KEYUP, 0)

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2017-06-27 16:03
琅拿度
Rank: 1
等 级:新手上路
帖 子:166
专家分:5
注 册:2016-4-7
收藏
得分:0 
以下是引用红星二锅头在2017-6-27 16:03:44的发言:

用 SPY++ 测试,第二个参数不是 0
用下面的代码试试看
管用吗???

Declare keybd_event In user32 Integer, Integer,Integer,Integer

KEYEVENTF_EXTENDEDKEY = 0x01
KEYEVENTF_KEYUP = 0x02
VK_SHIFT = 0x10
VK_END = 0x23

=keybd_event(VK_SHIFT, 0x2A ,0, 0)
=keybd_event(VK_END, 0x4F, KEYEVENTF_EXTENDEDKEY, 0)
=keybd_event(VK_END, 0x4F, KEYEVENTF_EXTENDEDKEY, 0)
=keybd_event(VK_SHIFT, 0x2A, KEYEVENTF_KEYUP, 0)


谢谢!可以有效使用了!但是有个疑问:
=keybd_event(VK_END, 0x4F, KEYEVENTF_EXTENDEDKEY, 0)
=keybd_event(VK_END, 0x4F, KEYEVENTF_EXTENDEDKEY, 0)

为何要两句一样的代码?我试了一句就可以实现了,是否会有其它问题?
2017-06-28 12:39
琅拿度
Rank: 1
等 级:新手上路
帖 子:166
专家分:5
注 册:2016-4-7
收藏
得分:0 
现在可用代码:

keybd_event(VK_SHIFT, 42, 0, 0)
keybd_event(VK_END, 79, 1, 0)
keybd_event(VK_END, 79, 2, 0)
keybd_event(VK_SHIFT, 42, 2, 0)

感谢二锅头同志
2017-06-28 12:45
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
是我粗心,复制后调试时没有及时的删除,对于你的善意批评,我虚心接受,谢谢,,,

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2017-06-28 13:21
琅拿度
Rank: 1
等 级:新手上路
帖 子:166
专家分:5
注 册:2016-4-7
收藏
得分:0 
以下是引用红星二锅头在2017-6-28 13:21:17的发言:

是我粗心,复制后调试时没有及时的删除,对于你的善意批评,我虚心接受,谢谢,,,


呵呵,哪里敢提批评,真的是以为特殊需要,我有疑问我就问,有些东西不是理解得很深入,我一般都是照样画葫芦举一反三,能用就好。

真的非常感谢你!又学到一点!
2017-06-29 09:51
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
为什么一定要使用 keybd_event API ?
如果要模拟 “SHIFT+END”按键
必须至少有6条语句
还要查该按键的扫描码
为什么不用 Keyboard "{Shift+End}"  && SHIFT + END
不是更简单吗?

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2017-06-29 10:15
琅拿度
Rank: 1
等 级:新手上路
帖 子:166
专家分:5
注 册:2016-4-7
收藏
得分:0 
以下是引用红星二锅头在2017-6-29 10:15:08的发言:

为什么一定要使用 keybd_event API ?
如果要模拟 “SHIFT+END”按键
必须至少有6条语句
还要查该按键的扫描码
为什么不用 Keyboard "{Shift+End}"  && SHIFT + END
不是更简单吗?


我以前真不知道VFP还有这个命令,我以后会尝试用的,谢谢你!
2017-06-29 12:34
快速回复:关于shift 键的“键盘”虚拟按键
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019816 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved