All articles(网络文学目录) All Pictures(图片目录) All Softwares(软件目录)

 
delphi模拟按下键盘上的某个键

Writer: aaa Article type: Programming skills(编程技巧) Time: 2014/7/19 0:12:02 Browse times: 363 Comment times: 0

delphi模拟按下键盘上的某个键


Head photo

Go homepage
Upload pictures
Write articles

delphi模拟按下键盘上的某个键

模拟按下键盘上的某个键
模拟按下键盘上的某个键,可以帮助用户解决只能利用键盘输入的问题。例如自动填表软件,可以将预先设定的内容分别添加到相应的选项中,用户不用一一填写。
下面编写一个实现模拟键盘输入的示例,单击“开始模拟”按钮,然后程序将演示输入字符串“’abc123{left}{left}{left}def{end}456{left 6}ghi{end}789”的过程({left 6}相当于按6次鼠标左键)。
本例通过调用Windows 提供的API 函数keybd_event 来模拟键盘的行为。keybd_event 的函数声明如下:
VOID keybd_event(
BYTE bVk, //虚拟键值
BYTE bScan, //扫描值
DWORD dwFlags, //各种函数功能
DWORD dwExtraInfo //额外信息
);
通过如下调用实现输入延迟现象。
PeekMessage(KeyboardMsg,0,WM_KEYFIRST, WM_KEYLAST, PM_REMOVE)
现在开始编写程序。
(1)创建一个新项目,添加一个RichEdit 组件和一个按钮,按钮的标题设为“开始模拟”,RichEdit组件用来接受键盘的输入。
(2)添加模拟键盘输入的函数SendKeys,它有两个参数,第1 个是要输入的字符串,第2 个是是否需要延时,代码如下:
Function SendKeys(SendKeysString : PChar; Wait : Boolean) : Boolean;
type
WBytes = array[0..pred(SizeOf(Word))] of Byte;
TSendKey = record
Name : ShortString;
VKey : Byte;
end;
const
{SendKeys 可以识别的键值:}
MaxSendKeyRecs = 41;
SendKeyRecs : array[1..MaxSendKeyRecs] of TSendKey =
(
(Name:’BKSP’; VKey:VK_BACK),
(Name:’BS’; VKey:VK_BACK),
(Name:’BACKSPACE’; VKey:VK_BACK),
(Name:’BREAK’; VKey:VK_CANCEL),
(Name:’CAPSLOCK’; VKey:VK_CAPITAL),
(Name:’CLEAR’; VKey:VK_CLEAR),
(Name:’DEL’; VKey:VK_DELETE),
(Name:’DELETE’; VKey:VK_DELETE),
(Name:’DOWN’; VKey:VK_DOWN),
(Name:’END’; VKey:VK_END),
(Name:’ENTER’; VKey:VK_RETURN),
(Name:’ESC’; VKey:VK_ESCAPE),
(Name:’ESCAPE’; VKey:VK_ESCAPE),
(Name:’F1’; VKey:VK_F1),
(Name:’F10’; VKey:VK_F10),
(Name:’F11’; VKey:VK_F11),
(Name:’F12’; VKey:VK_F12),
(Name:’F13’; VKey:VK_F13),
(Name:’F14’; VKey:VK_F14),
(Name:’F15’; VKey:VK_F15),
(Name:’F16’; VKey:VK_F16),
(Name:’F2’; VKey:VK_F2),
(Name:’F3’; VKey:VK_F3),
(Name:’F4’; VKey:VK_F4),
(Name:’F5’; VKey:VK_F5),
(Name:’F6’; VKey:VK_F6),
(Name:’F7’; VKey:VK_F7),
(Name:’F8’; VKey:VK_F8),
(Name:’F9’; VKey:VK_F9),
(Name:’HELP’; VKey:VK_HELP),
(Name:’HOME’; VKey:VK_HOME),
(Name:’INS’; VKey:VK_INSERT),
(Name:’LEFT’; VKey:VK_LEFT),
(Name:’NUMLOCK’; VKey:VK_NUMLOCK),
(Name:’PGDN’; VKey:VK_NEXT),
(Name:’PGUP’; VKey:VK_PRIOR),
(Name:’PRTSC’; VKey:VK_PRINT),
(Name:’RIGHT’; VKey:VK_RIGHT),
(Name:’SCROLLLOCK’; VKey:VK_SCROLL),
(Name:’TAB’; VKey:VK_TAB),
(Name:’UP’; VKey:VK_UP)
);





There are 0 records,
Comment:
Must be registered users to comment(必须是注册用户才能发表评论)

Disclaimer Privacy Policy About us Site Map
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.