1
0
mirror of https://github.com/moparisthebest/Simba synced 2024-11-28 03:52:23 -05:00

MML: SendKeys (win), Better way to do it.

This commit is contained in:
John P (Dgby714) 2011-07-23 18:00:23 -04:00
parent 3fbeab9a0b
commit 8acb244ec3

View File

@ -368,36 +368,29 @@ end;
procedure TWindow.SendString(str: string); procedure TWindow.SendString(str: string);
var var
I, L: Integer; I, L: integer;
K: Byte; C: Byte;
HoldShift: Boolean; ScanCode, VK: Word;
Shift: boolean;
begin begin
HoldShift := False;
L := Length(str); L := Length(str);
for I := 1 to L do for I := 1 to L do
begin begin
if (((str[I] >= 'A') and (str[I] <= 'Z')) or VK := VkKeyScan(str[I]);
((str[I] >= '!') and (str[I] <= '&')) or Shift := (Hi(VK) > 0);
((str[I] >= '(') and (str[I] <= '+')) or C := LoByte(VK);
(str[I] = ':') or ScanCode := MapVirtualKey(C, 0);
((str[I] >= '<') and (str[I] <= '@')) or
((str[I] >= '^') and (str[I] <= '_')) or
((str[I] >= '{') and (str[I] <= '~'))) then
begin
HoldKey(VK_SHIFT);
HoldShift := True;
end;
K := GetKeyCode(str[I]); WriteLn(ScanCode);
HoldKey(K);
Sleep(20);
ReleaseKey(K);
if (HoldShift) then if (Shift) then
begin Keybd_Event(VK_SHIFT, $2A, 0, 0);
HoldShift := False;
ReleaseKey(VK_SHIFT); Keybd_Event(C, ScanCode, 0, 0);
end; Keybd_Event(C, ScanCode, KEYEVENTF_KEYUP, 0);
if (Shift) then
Keybd_Event(VK_SHIFT, $2A, KEYEVENTF_KEYUP, 0);
end; end;
end; end;