delphi中如何模拟最简单的键盘输入?

有没最简单的方法,例如我要按退格和回车两个键,但要相隔三秒,重复~ 谢了。

举个例子,模拟字符“a”的输入: keybd_event(65,0,0,0);
----------------------------------------------------------------
模拟键盘可以用Keybd_event这个api函数,模拟鼠标按键用mouse_event函数.

Keybd_event函数能触发一个按键事件,也就是会产生一个WM_KEYDOWN或WM_KEYUP消息,一般用这两个消息来模拟一

次按键(按键的过程是:按下,然后弹起),但是没有直接用这个函数方便。
Keybd_event共有四个参数:
第一个为按键的虚拟键值,如回车键为 vk_return, tab键为vk_tab;
第二个参数为扫描码,一般不用设置,用0代替就行;
第三个参数为选项标志,如果为 keydown则置0即可,如果为keyup则设成“KEYEVENTF_KEYUP”;
第四个参数一般也是置0即可。

例如用以下代码即可实现模拟按下i键,其中的$49表示i键的虚拟键值:

keybd_event($49,0,0,0);

keybd_event($49,0,KEYEVENTF_KEYUP,0);

mouse_event最好配合setcursorpos(x,y)函数一起使用,先定位鼠标,再产生鼠标事件.
mouse_event有五个参数:
第一个为选项标志,为MOUSEEVENTF_LEFTDOWN时表示左键按下,为 MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息;
第二三个参数分别表示x,y相对位置,一般可设为0,0;
第四五个参数并不重要,一般也可设为0,0。

mouse_event的示例代码:

setcursorpos(20,132);

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); ...

上面的代码表示鼠标的双击,若要表示单击,用两个mouse_event即可(一次放下,一次松开)。

注意
不管是模拟键盘还是鼠标事件,都要注意还原,即按完键要松开,一个keydown对应一个keyup;鼠标单击 完也要松开, 不然可能影响程序的功能。

例子1:模拟按下'A'键
keybd_event(65,0,0,0);
keybd_event(65,0,KEYEVENTF_KEYUP,0);

例子2:模拟按下'ALT+F4'键
keybd_event(18,0,0,0);
keybd_event(115,0,0,0);
keybd_event(115,0,KEYEVENTF_KEYUP,0);
keybd_event(18,0,KEYEVENTF_KEYUP,0);

附:常用模拟键的键值对照表。

键盘键与虚拟键码对照表

字母和数字键 数字小键盘的键 功能键 其它键
键 键码 键 键码 键 键码 键 键码
A 65 0 96 F1 112 Backspace 8
B 66 1 97 F2 113 Tab 9
C 67 2 98 F3 114 Clear 12
D 68 3 99 F4 115 Enter 13
E 69 4 100 F5 116 Shift 16
F 70 5 101 F6 117 Control 17
G 71 6 102 F7 118 Alt 18
H 72 7 103 F8 119 Caps Lock 20
I 73 8 104 F9 120 Esc 27
J 74 9 105 F10 121 Spacebar 32
K 75 * 106 F11 122 Page Up 33
L 76 + 107 F12 123 Page Down 34
M 77 Enter 108 -- -- End 35
N 78 - 109 -- -- Home 36
O 79 . 110 -- -- Left Arrow 37
P 80 / 111 -- -- Up Arrow 38
Q 81 -- -- -- -- Right Arrow 39
R 82 -- -- -- -- Down Arrow 40
S 83 -- -- -- -- Insert 45
T 84 -- -- -- -- Delete 46
U 85 -- -- -- -- Help 47
V 86 -- -- -- -- Num Lock 144
W 87
X 88
Y 89
Z 90
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-04-30
是啊,键盘事件最简单
第2个回答  2010-04-30
keybd_event

delphi中如何模拟最简单的键盘输入?
第一个为按键的虚拟键值,如回车键为 vk_return, tab键为vk_tab;第二个参数为扫描码,一般不用设置,用0代替就行;第三个参数为选项标志,如果为 keydown则置0即可,如果为keyup则设成“KEYEVENTF_KEYUP”;第四个参数一般也是置0即可。例如用以下代码即可实现模拟按下i键,其中的$49表示i键的虚...

delphi7实现模拟键盘按键,比如按下v键,数字0,回车等
begin hwndwindow:=findwindow(nil,'DELPHI技巧');\/\/DELPHI技艺改成你要最大化的窗口标提.if hwndwindow<>0 then\/\/不等于0则是找到了这个窗体 postmessage(hwndwindow,WM_SYSCOMMAND,SC_MAXIMIZE,0);\/\/用postmessage发送一条最大化消息(SC_MAXIMIZE)到这个窗体的句柄 \/\/ \/\/另外postmessage(hwndwin...

delphi编写能够模拟键盘输入应用程序的源代码
if not nosay then begin writeln('请在五秒之内移动到江湖窗口,鼠标点击话语输入框,等待自动说出0'#13#10);sleep(5000);focushld:=getfocushld;write('已经开始自动泡点,按Ctrl+C退出程序。(',focushld,') ... ');end else write('此次仅仅是自动关闭IE弹出窗口,按Ctrl+C退出程序 ... ...

如何自动模拟按键盘
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0 );mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 );鼠标双击由两次按下与释放来模拟 键盘模拟 一般虚拟键值(VK_)由KeyDown或keyup事件...

Delphi 实现 定时模拟键盘按键
添加一个timer1控件+button1,将里面的代码全替换如下就可以了 unit Unit1;interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;type TForm1 = class(TForm)Button1: TButton;Timer1: TTimer;procedure Button1Click(Sender: TObject...

delphi 用代码模拟2个鼠标、键盘操作,高手进
模拟鼠标的左右键:Mouse_Event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);Mouse_Event(MOUSEEVENTF_LEFTUP,0,0,0,0);Mouse_Event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);Mouse_Event(MOUSEEVENTF_RIGHTUP,0,0,0,0);模拟键盘的方向键:keybd_event(VK_LEFT,0,0,0);keybd_event(VK_RIGHT,0,0,0);keybd_...

我想用DELPHI对网页里面的文本输入框进行赋值,但这个文本框没有ID,CLAS...
方法一:植入 JS 代码,用 jQuery 选择器去找到它直接赋值。方法二:用 Delphi 编程捕获网页窗口句柄,获得编辑框焦点,模拟键盘输入。

DELPHI 中如何让edit1.text只能输入数字和字母
你可以通过Edit1控件的KeyPress事件来进行控制。KeyPress中有个参数Key,当键盘输入时。你可以对Key进行判断,下面是一个只接收0-9,小数点和退格、回车、ESC的例子:If not (Key in ['0'..'9','.',#27,#13,#8]) then Key:=#0 Else Key:=SendKey;end;...

VB中如何模拟小键盘数字的输入(不使用keybd_event)
Sendkeys确实不能办到。如果不愿意用keybd_event,有其他办法:可以用SPY++监视Windows的“屏幕键盘”对其他程序发的消息 自己仿造其用SendMessage,理论上可行,不过我觉得,还是没有keybd_event方便。这个问题上,没有更简单的方法了,你可以做一个Moudle,处理完这个问题,一劳永逸。要知道,VC、Delphi...

delphi 键盘值
建议利用窗口Form的onKeyDown()事件,不过要先把其KeyPreview属性设置为true,使窗口响应键盘输入。procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift:TShiftState);begin if (Key = Ord('1')) or(Key = Ord(VK_NUMPAD1)) then showMessage('1') \/\/也可以设置为按键1的...

相似回答