好了,差不多我试图发送一个字符串和编辑框的击键到活动窗口和回车键后。有没有人在这里知道在德尔福7这样做的工作方法?如何将密钥发送到使用delphi 7的另一个应用程序?
我一直在寻找了约一个小时半,这和我不能似乎发现了什么,我已经找到了东西醚德尔福的新版本,或者它只是不工作。我试过TTouchKeyboard,但这只适用于delphi 10和更新版本。
好了,差不多我试图发送一个字符串和编辑框的击键到活动窗口和回车键后。有没有人在这里知道在德尔福7这样做的工作方法?如何将密钥发送到使用delphi 7的另一个应用程序?
我一直在寻找了约一个小时半,这和我不能似乎发现了什么,我已经找到了东西醚德尔福的新版本,或者它只是不工作。我试过TTouchKeyboard,但这只适用于delphi 10和更新版本。
我用这个来发送文本与无界面的恼人的弹出3G应用,它的黑客攻击是我们wern't留下任何选项。
procedure TForm1.TypeMessage(Msg: string);
var
CapsOn: boolean;
i: integer;
ch: char;
shift: boolean;
key: short;
begin
CapsOn := (GetKeyState(VK_CAPITAL) and $1) <> 0;
for i:=1 to length(Msg) do
begin
ch := Msg[i];
ch := UpCase(ch);
if ch <> Msg[i] then
begin
if CapsOn then
begin
keybd_event(VK_SHIFT, 0, 0, 0);
end;
keybd_event(ord(ch), 0, 0, 0);
keybd_event(ord(ch), 0, KEYEVENTF_KEYUP, 0);
if CapsOn then
begin
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
end;
end
else
begin
key := VKKeyScan(ch);
// UpperCase
if ((not CapsOn) and (ch>='A') and (ch <= 'Z')) or
((key and $100) > 0) then
begin
keybd_event(VK_SHIFT, 0, 0, 0);
end;
keybd_event(key, 0, 0, 0);
keybd_event(key, 0, KEYEVENTF_KEYUP, 0);
if ((not CapsOn) and (ch>='A') and (ch <= 'Z')) or
((key and $100) > 0) then
begin
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
end;
end;
end;
end;
希望帮助
UPDATE
编辑以允许其他字符(非字母),即从单位转向数字!“£$等
见keybd_event功能。您需要在字符和键盘扫描代码之间进行转换,但互联网上充满了这方面的信息。
除非您需要模拟输入,否则将WM_SETTEXT发送到编辑框窗口然后将Enter作为键盘发送是有意义的。这可以让你避免处理扫描码。
使用的SendKeys()德尔福7安装光盘上SNDKEY32.PAS。如果你不能找到你的CD,看here。工作正常,我(Delphi7的在Windows 7)。
您是否尝试过SendInput? – 2012-03-12 19:23:59
它是否必须是Delphi?看看Autohotkey。 – 2012-03-12 19:30:56