文章目录
Wino驱动模拟键盘
提示:这里可以添加技术概要
uses
MouseKeyboard;
核心源码
procedure TForm1.Button1Click(Sender: TObject);
begin
MKMouseDown(mcLeft); //按下鼠标左键
MKMouseMoveTo(200,300); //移动到指定位置
MKMouseUp(mcLeft); //放开鼠标左键
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Mouse_event(MOUSEEVENTF_LEFTDOWN,100,100,0,0);//模拟鼠标按下左键后松开
Mouse_event(MOUSEEVENTF_LEFTUP,100,100,0,0);
end;
unit MouseKeyboard;
//
//利用WinIo模拟鼠标键盘的输入
//作者:yeye55 2010年1月8日
//
//版权 2010,由 yeye55 拥有,保留所有权利。
//本文件中的代码是免费程序,无需任何授权或许可即可用于个人和商业目的。使用者一切后果自负。
//
//如果你转载了本文件中的代码,请注明代码出处和代码作者;
//如果你修改了本文件中的代码,请注明修改位置和修改作者。
//
//本文件最早在http://www.programbbs.com/bbs/上发布
//
interface
uses
Windows, SysUtils, IniFiles;
type
//数据包
TMKPacketData = array [0…3] of Byte;
//104键盘代码,注:“Pause”键被忽略
TMKKeyCode = (
kcA, //“A”和“a”
kcB, //“B”和“b”
kcC, //“C”和“c”
kcD, //“D”和“d”
kcE, //“E”和“e”
kcF, //“F”和“f”
kcG, //“G”和“g”
kcH, //“H”和“h”
kcI, //“I”和“i”
kcJ, //“J”和“j”
kcK, //“K”和“k”
kcL, //“L”和“l”
kcM, //“M”和“m”
kcN, //“N”和“n”
kcO, //“O”和“o”
kcP, //“P”和“p”
kcQ, //“Q”和“q”
kcR, //“R”和“r”
kcS, //“S”和“s”
kcT, //“T”和“t”
kcU, //“U”和“u”
kcV, //“V”和“v”
kcW, //“W”和“w”
kcX, //“X”和“x”
kcY, //“Y”和“y”
kcZ, //“Z”和“z”
kc0, //“0”和“)”
kc1, //“1”和“!”
kc2, //“2”和“@”
kc3, //“3”和“#”
kc4, //“4”和“$”
kc5, //“5”和“%”
kc6, //“6”和“^”
kc7, //“7”和“&”
kc8, //“8”和“*”
kc9, //“9”和“(”
kc_C0, //“`”和“~”
kc_BD, //“-”和“_”
kc_BB, //“=”和“+”
kc_DC, //“\”和“|”
kc_DB, //“[”和“{”
kc_DD, //“]”和“}”
kc_BA, //“;”和“:”
kc_DE, //“'”和“"”
kc_BC, //“,”和“<”
kc_BE, //“.”和“>”
kc_BF, //“/”和“?”
kcBack, //退格键 Backspace
kcSpace, //空格键
kcTab, //“Tab”键
kcCaps, //大写锁定键
kcLShift, //左“Shift”键
kcLCtrl, //左“Ctrl”键
kcLWin, //左开始菜单键 L_GUI
kcLAlt, //左“Alt”键
kcRShift, //右“Shift”键
kcRCtrl, //右“Ctrl”键
kcRWin, //右开始菜单键 R_GUI
kcRAlt, //右“Alt”键
kcApps, //快捷菜单键
kcEnter, //回车键
kcEsc, //“Esc”健
kcF1, //“F1”键
kcF2, //“F2”键
kcF3, //“F3”键
kcF4, //“F4”键
kcF5, //“F5”键
kcF6, //“F6”键
kcF7, //“F7”键
kcF8, //“F8”键
kcF9, //“F9”键
kcF10, //“F10”键
kcF11, //“F11”键
kcF12, //“F12”键
kcSysRq, //截屏键 PrintScreen
kcScroll, //锁定键
kcPause, //暂停键,Pause/Break
kcInsert, //插入键
kcHome, //行首键
kcPageUp, //向上翻页键
kcDelete, //删除键
kcEnd, //行末键
kcPageDown, //向下翻页键
kcUp, //向上光标键
kcLeft, //向左光标键
kcDown, //向下光标键
kcRight, //向右光标键
kcNum, //数字键盘锁定键
kcNumDivide, //数字键盘“/”
kcNumMultiply, //数字键盘“*”
kcNumSubtract, //数字键盘“-”
kcNumAdd, //数字键盘“+”
kcNumEnter, //数字键盘回车
kcNumDecimal, //数字键盘“.”
kcNum0, //数字键盘“0”
kcNum1, //数字键盘“1”
kcNum2, //数字键盘“2”
kcNum3, //数字键盘“3”
kcNum4, //数字键盘“4”
kcNum5, //数字键盘“5”
kcNum6, //数字键盘“6”
kcNum7, //数字键盘“7”
kcNum8, //数字键盘“8”
kcNum9 //数字键盘“9”
);
//键盘码数据
TMKKeyData = record
Code : TMKKeyCode; //键码
Char : array [0..1] of AnsiChar; //键码对应的字符
Length : Byte; //高4位为通码长度,低4位为断码长度
Make : TMKPacketData; //通码
Break : TMKPacketData; //断码
end;
const
//第一套键盘扫描码,101、102和104键的键盘,注:“Pause”键被忽略。
MKKeyCount = 104;
MKKeyData : array [0…MKKeyCount-1] of TMKKeyData = (
(Code : kcA; Char : ‘aA’; Length : $11; Make : ($1E,$00,$00,$00); Break : ($9E,$00,$00,$00)),
(Code : kcB; Char : ‘bB’; Length : $11; Make : ($30,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(B0,$00,$00,$00)),
(Code : kcC; Char : ‘cC’; Length : $11; Make : ($2E,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(AE,$00,$00,$00)),
(Code : kcD; Char : ‘dD’; Length : $11; Make : ($20,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(A0,$00,$00,$00)),
(Code : kcE; Char : ‘eE’; Length : $11; Make : ($12,$00,$00,$00); Break : ($92,$00,$00,$00)),
(Code : kcF; Char : ‘fF’; Length : $11; Make : ($21,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(A1,$00,$00,$00)),
(Code : kcG; Char : ‘gG’; Length : $11; Make : ($22,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(A2,$00,$00,$00)),
(Code : kcH; Char : ‘hH’; Length : $11; Make : ($23,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(A3,$00,$00,$00)),
(Code : kcI; Char : ‘iI’; Length : $11; Make : ($17,$00,$00,$00); Break : ($97,$00,$00,$00)),
(Code : kcJ; Char : ‘jJ’; Length : $11; Make : ($24,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(A4,$00,$00,$00)),
(Code : kcK; Char : ‘kK’; Length : $11; Make : ($25,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(A5,$00,$00,$00)),
(Code : kcL; Char : ‘lL’; Length : $11; Make : ($26,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(A6,$00,$00,$00)),
(Code : kcM; Char : ‘mM’; Length : $11; Make : ($32,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(B2,$00,$00,$00)),
(Code : kcN; Char : ‘nN’; Length : $11; Make : ($31,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(B1,$00,$00,$00)),
(Code : kcO; Char : ‘oO’; Length : $11; Make : ($18,$00,$00,$00); Break : ($98,$00,$00,$00)),
(Code : kcP; Char : ‘pP’; Length : $11; Make : ($19,$00,$00,$00); Break : ($99,$00,$00,$00)),
(Code : kcQ; Char : ‘qQ’; Length : $11; Make : ($10,$00,$00,$00); Break : ($90,$00,$00,$00)), //断码$19改为$90
(Code : kcR; Char : ‘rR’; Length : $11; Make : ($13,$00,$00,$00); Break : ($93,$00,$00,$00)),
(Code : kcS; Char : ‘sS’; Length : $11; Make : ($1F,$00,$00,$00); Break : ($9F,$00,$00,$00)),
(Code : kcT; Char : ‘tT’; Length : $11; Make : ($14,$00,$00,$00); Break : ($94,$00,$00,$00)),
(Code : kcU; Char : ‘uU’; Length : $11; Make : ($16,$00,$00,$00); Break : ($96,$00,$00,$00)),
(Code : kcV; Char : ‘vV’; Length : $11; Make : ($2F,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(AF,$00,$00,$00)),
(Code : kcW; Char : ‘wW’; Length : $11; Make : ($11,$00,$00,$00); Break : ($91,$00,$00,$00)),
(Code : kcX; Char : ‘xX’; Length : $11; Make : ($2D,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(AD,$00,$00,$00)),
(Code : kcY; Char : ‘yY’; Length : $11; Make : ($15,$00,$00,$00); Break : ($95,$00,$00,$00)),
(Code : kcZ; Char : ‘zZ’; Length : $11; Make : ($2C,$00,$00, 00 ) ; B r e a k : ( 00); Break : ( 00);Break:(AC,$00,$00,$00)),
(Code : kc0; Char : ‘0)’; Length : $11; Make : ($0B,$00,$00,$00); Break : ($8B,$00,$00,$00)),
(Code : kc1; Char : ‘1!’; Length : $11; Make : ($02,$00,$00,$00); Break : ($82,$00,$00,$00)),
(Code : kc2; Char : ‘2@’; Length : $11; Make : ($03,$00,$00,$00); Break : ($83,$00,$00,$00)),
(Code : kc3; Char : ‘3#’; Length : $11; Make : ($04,$00,$00,$00); Break : ($84,$00,$00, 00 ) ) , ( C o d e : k c 4 ; C h a r : ′ 4 00)), (Code : kc4; Char : '4 00)),(Code:kc4;Char:′4’; Length : $11; Make : ($05,$00,$00,$00); Break : ($85,$00,$00,$00)),
(Code : kc5; Char : ‘5%’; Length : $11; Make : ($06,$00,$00,$00); Break : ($86,$00,$00,$00)),
(Code : kc6; Char : ‘6^’; Length : $11; Make : ($07,$00,$00,$00); Break : ($87,$00,$00,$00)),
(Code : kc7; Char : ‘7&’; Length : $11; Make : ($08,$00,$00,$00); Break : ($88,$00,$00,$00)),
(Code : kc8; Char : ‘8*’; Length : $11; Make : ($09,$00,$00,$00); Break : ($89,$00,$00,$00)),
(Code : kc9; Char : ‘9(’; Length : $11; Make : ($0A,$00,$00,$00); Break : ($8A,$00,$00,$00)),
(Code : kc_C0; Char : ‘`~’; Length : $11; Make : ($29,$00,$00,$00); Break : ($89,$00,$00,$00)),
(Code : kc_BD; Char : ‘-_’; Length : $11; Make : ($0C,$00,$00,$00); Break : ($8C,$00,$00,$00)),
(Code : kc_BB; Char : ‘=+’; Length : $11; Make : ($0D,$00,$00,$00); Break : ($8D,$00,$00,$00)),
(Code : kc_DC; Char : ‘|’; Length : $11; Make : ($2B,$00,$00, 00 ) ; B r e a k : ( 00); Br