gpt4 book ai didi

delphi - 模拟键盘输入

转载 作者:行者123 更新时间:2023-12-03 15:22:14 29 4
gpt4 key购买 nike

如何在 TWebBrowser 或 TChromium 中模拟真人的打字。它可以是这两者中的任何一个。

最佳答案

需要一些调整,可能有助于进一步的开发

procedure SendKeys(sText: String);

var
i : Integer;
shift : Boolean;
vk, scancode : Word;
ch : Char;
c, s : Byte;
const
vk_keys : Array[0..9] of Byte=(VK_HOME, VK_END, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_PRIOR, VK_NEXT, VK_INSERT, VK_DELETE);
vk_shft : Array[0..2] of Byte=(VK_SHIFT, VK_CONTROL, VK_MENU);
flags : Array[FALSE..TRUE] of Integer = (KEYEVENTF_KEYUP, 0);
C_ALTGRS = ['\','@','~','²','³','€','{','}','[',']'];

begin
shift:=FALSE;
for i:=1 to Length(sText) do begin
ch:=sText[i];
if (ch>=#250) then begin
s:=Ord(ch)-250;
shift:=NOT Odd(s);
c:=vk_shft[s shr 1];
scancode:=MapVirtualKey(c, 0);
Keybd_Event(c, scancode, flags[shift], 0);
end else begin
vk:=0;
if (ch>=#240) then
c:=vk_keys[Ord(ch)-240]
else if (ch>=#228) then
c:=Ord(ch)-116
else if (ch<#32) then
c:=Ord(ch)
else begin
vk:=VkKeyScan(ch);
c:=LoByte(vk);
end;

scancode:=MapVirtualKey(c, 0);

if (sText[i] in C_AltGRS) then Keybd_Event(VK_RMENU, MapVirtualKey(VK_RMENU,0), 0, 0)
else if (NOT shift AND (Hi(vk)>0)) then Keybd_Event(VK_SHIFT, $2A, 0, 0 );
Keybd_Event( c, scancode, 0, 0 );
Keybd_Event( c, scancode, KEYEVENTF_KEYUP, 0 );
if (sText[i] in C_AltGRS) then Keybd_Event(VK_RMENU,MapVirtualKey(VK_RMENU,0), KEYEVENTF_KEYUP, 0)
else if (NOT shift AND (Hi(vk)>0)) then Keybd_Event(VK_SHIFT, $2A, KEYEVENTF_KEYUP, 0);

end;
Application.ProcessMessages;
end;
end;



procedure TForm4.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.google.de');

end;

procedure TForm4.SpeedButton1Click(Sender: TObject);
begin
SendKeys('test');
SendKeys(#13);
end;

关于delphi - 模拟键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988831/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com