gpt4 book ai didi

delphi - Delphi 2010 中的 SendKeys

转载 作者:行者123 更新时间:2023-12-02 22:21:59 27 4
gpt4 key购买 nike

嗨,我正在尝试执行经典的 SendKeys ('hello world'); 是在 Visual Basic Delphi 中完成的,但我发现你不能这样做。

有谁知道怎么做吗?

最佳答案

查看 Win32 API keybd_event()SendInput()功能。这两个函数都是在 Delphi 的 Windows 单元中声明的。

例如:

uses
Windows;

procedure SendKeys(const S: String);
var
I: Integer;
begin
for I := 1 to Length(S) do
begin
// keybd_event() does not support Unicode, so you should use SendInput() instead...
keybd_event(S[I], MapVirtualKey(S[I], 0),0, 0);
keybd_event(S[I], MapVirtualKey(S[I], 0), KEYEVENTF_KEYUP, 0);
end;
end;

uses
Windows;

{$POINTERMATH ON}
procedure SendKeys(const S: String);
var
InputEvents: PInput;
I, J: Integer;
begin
if S = '' then Exit;
GetMem(InputEvents, SizeOf(TInput) * (Length(S) * 2));
try
J := 0;
for I := 1 to Length(S) do
begin
InputEvents[J].Itype := INPUT_KEYBOARD;
InputEvents[J].ki.wVk := 0;
InputEvents[J].ki.wScan := Ord(S[I]);
InputEvents[J].ki.dwFlags := KEYEVENTF_UNICODE;
InputEvents[J].ki.time := 0;
InputEvents[J].ki.dwExtraInfo := 0;
Inc(J);
InputEvents[J].Itype := INPUT_KEYBOARD;
InputEvents[J].ki.wVk := 0;
InputEvents[J].ki.wScan := Ord(S[I]);
InputEvents[J].ki.dwFlags := KEYEVENTF_UNICODE or KEYEVENTF_KEYUP;
InputEvents[J].ki.time := 0;
InputEvents[J].ki.dwExtraInfo := 0;
Inc(J);
end;
SendInput(J, InputEvents[0], SizeOf(TInput));
finally
FreeMem(InputEvents);
end;
end;

关于delphi - Delphi 2010 中的 SendKeys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19696107/

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