【编程】我来做练习-Wino驱动模拟键盘

这篇博客介绍了如何使用Wino驱动来模拟键盘输入,包括按下和释放鼠标按键的代码示例,以及核心源码展示,适用于DELPHI开发环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大龙软件研发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值