关于KeyBd_Event()的问题。(10分)

  • 主题发起人 主题发起人 易名烦
  • 开始时间 开始时间

易名烦

Unregistered / Unconfirmed
GUEST, unregistred user!
Procedure TForm1.Button5Click(Sender: TObject);<br>Var<br>&nbsp;Bh: Pchar;<br>&nbsp;I: Integer;<br>begin<br>&nbsp;bh := Pchar(Uppercase('596-030117-002'));<br>&nbsp;Sleep(2000);<br>&nbsp;for I := 0 to Length(bh) - 1 do Begin<br>&nbsp; KeyBd_Event(Ord(Bh),MapVirtualKey(Ord(Bh),0),0,0);<br>&nbsp; KeyBd_Event(Ord(Bh),MapVirtualKey(Ord(Bh),0),KeyEventF_KeyUp,0);<br>&nbsp;End;<br>end;<br>结果出来是:596030117002 ,'-'却不见了.<br>1.为什么?<br>2.怎么办?
 
ord('-') = 45<br>但是你在Key Down事件中写caption := inttostr(key);会发现按下减号键后key = 189,而按下insert键得到的确是45。<br>就是说Ascii值不一定就是键值。<br>改成这样就可以了。<br>bh := Pchar(Uppercase('596'+#189+'030117'+#189+'002'));
 
keybd_event使用的是VirtualKey值,而ord产生的是字符的ASC码,两个概念<br>对于大写字母和数字,这两个值正好相等,但是其它的键就不行了<br>
 
我用BYTE('-')也不行,有无解方法。
 
多人接受答案了。
 

Similar threads

后退
顶部