求实现以下功能
程序能识别粘贴板中的内容,比如粘贴板中的内容是A B C,则按下某一全局热键(假设是F2),则程序模拟按下A B C,A B C之间的空格代表时间间隔,假设为0.2秒。另外还有回车的情况,比如
A B C
D E F
这种情况回车代表间隔0.5秒(C和D之间)。请问如何实现?谢谢,200分
程序能识别粘贴板中的内容,比如粘贴板中的内容是A B C,则按下某一全局热键(假设是F2),则程序模拟按下A B C,A B C之间的空格代表时间间隔,假设为0.2秒。另外还有回车的情况,比如
A B C
D E F
这种情况回车代表间隔0.5秒(C和D之间)。请问如何实现?谢谢,200分
uses
Clipbrd;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
clp:Tclipboard;
i: integer;
str: string;
begin
if key=vk_f2 then
begin
clp:=Tclipboard.Create;
str:=clp.AsText;
for i:=1 to length(str) do
begin
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), 0 , 0 );
end;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
keybd_event(vk_f2, MapVirtualKey(vk_f2, 0 ), 0 , 0 );
end;
begin
clp:=Tclipboard.Create;
str:=clp.AsText;
for i:=1 to length(str) do
begin
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), 0 , 0 );
sleep(500);//延时0.5
end;
clp.free;
end;
uses
Clipbrd;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
clp:Tclipboard;
i: integer;
str: string;
begin
if key=vk_f2 then
begin
clp:=Tclipboard.Create;
str:=clp.AsText;
for i:=1 to length(str) do
begin
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), 0 , 0 );
sleep(500);
end;
clp.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
keybd_event(vk_f2, MapVirtualKey(vk_f2, 0 ), 0 , 0 );
end;
则程序按下A,等X秒弹起A,等0.2秒按下B,等X秒弹起B,等0.2秒按下C,等X秒弹起C,这个意思,可以实现吗
sleep(500);
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), KEYEVENTF_KEYUP , 0 ); //弹起
再麻烦一下,能不能把空格过滤掉,就是指空格仅仅代表间隔的时间,程序模拟的时候并不输入空格,可以吗,谢谢。
for i:=1 to length(str) do
begin
if str[i]<>' ' then
begin
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), 0 , 0 ); //按下
sleep(500);
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), KEYEVENTF_KEYUP , 0 ); //弹起
end;
end;
for i:=1 to length(str) do
begin
if str[i] <>' ' then
begin
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), 0 , 0 ); //按下
sleep(500);
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), KEYEVENTF_KEYUP , 0 ); //弹起
end;
end;
for i:=1 to length(str) do
begin
if str[i]<>' 'then
begin
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), 0 , 0 );
sleep(x);// x可以设定
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), KEYEVENTF_KEYUP , 0 ); //弹起
end
else
sleep(200);//0.2s
end;
begin
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), 0 , 0 );
sleep(x);// x可以设定
keybd_event(ord(str[i]), MapVirtualKey(ord(str[i]), 0 ), KEYEVENTF_KEYUP , 0 ); //弹起
end;
if str[i]=' ' then
sleep(200);//0.2s
if str[i]=#13 then
sleep(1000);//0.2s
keybd_event(ord('S'), MapVirtualKey(ord('S'), 0), KEYEVENTF_KEYUP, 0);