keybd_event怎样才能模拟输出大写字母?(100分)

  • 主题发起人 主题发起人 zhshygshy
  • 开始时间 开始时间
Z

zhshygshy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在模拟输出字母a的时候,用了以下语句:<br>keybd_event( 65, 0, 0, 0 ); &nbsp; // &nbsp; &nbsp; &nbsp; &nbsp;'a'的ascii码是65<br>keybd_event( 65, 0, KEYEVENTF_KEYUP, 0); &nbsp; // &nbsp;<br>没有任何问题。<br><br>但是在模拟输出字母A的时候,用了以下语句:<br>keybd_event( 97, 0, 0, 0 ); &nbsp; // &nbsp; &nbsp; &nbsp; &nbsp;'A'的ascii码是97<br>keybd_event( 97, 0, KEYEVENTF_KEYUP, 0); &nbsp; // &nbsp;<br><br>程序没有任何反应。为什么?如何解决?谢谢!<br>
 
对不起,说错了。用keybd_event( 97, 0, 0, 0 ); &nbsp; 语句,程序会输出数字“1”。不是没有<br>任何反应。但这也不是我要的。
 
keybd_event( VK_LSHIFT, 0, 0, 0 );<br>keybd_event( 65, 0, 0, 0 );<br>keybd_event( 65, 0, KEYEVENTF_KEYUP, 0);<br>keybd_event( VK_LSHIFT, 0, KEYEVENTF_KEYUP, 0);
 
VK_LSHIFT输出的仍然是数字“1”,用VK_SHIFT就输出字符“A”了。<br>keybd_event( VK_SHIFT, 0, 0, 0 );<br>keybd_event( 65, 0, 0, 0 );<br>keybd_event( 65, 0, KEYEVENTF_KEYUP, 0);<br>keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
 
to Fyx:<br>我照你的做了,还是输出“1”。我已经定义了vk_shift=16。<br><br>to hhzh426:<br>vk_lshift的值应该定义为多少?
 
to zhshygshy:<br>&nbsp; 我也试过了,是大写的A啊。用vk_lshift是‘a’,用vk_shift是‘A’
 
vk_lshift,vk_shift,vk_rshift分别表示左shift,shift,右shift的虚拟键值,在windows<br>单元中有定义,因此你不能自己定义的,直接使用就可以了。<br>我试过分别用三种常数都能得到'A',实际上是发送一个键盘消息(按下左shift,按下shift<br>或者按下右shift)然后击a键然后再松开shift键,因此它们的结果应该是一样的,如果此时<br>你的caps lock键也被按下了,则输出的将是小写字母,但肯定不会输出'1'
 
to Fyx: 谢谢!<br><br>to hhzh426:我把你的代码copy了下来,可还是输出a,不知为何。但把LSHIFT改成SHIFT就<br>可以(此时的caps lock并没有on)。<br>不过,还是给你分数了。谢谢!
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
753
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部