unit uExtendVK;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms;
type
{ TExtendVK }
TExtendVK = class
constructor Create;
destructor Free;
function StringToVKControl(valore: string; var errore: string): boolean;
procedure StringToVKSend(valore: string;
sleep_millisecond_between_characters: integer);
private
procedure MyPress(key: word; maiuscolo: boolean;
sleep_millisecond_between_characters: integer);
end;
implementation
uses
MouseAndKeyInput, LCLType;
{ TExtendVK }
constructor TExtendVK.Create;
begin
end;
destructor TExtendVK.Free;
begin
end;
function TExtendVK.StringToVKControl(valore: string; var errore: string): boolean;
var
ret: boolean;
i: integer;
begin
ret:=false;
errore:='';
for i:=1 to Length(valore) do
begin
Case valore[i] of
'q' : ;
'w' : ;
'e' : ;
'r' : ;
't' : ;
'y' : ;
'u' : ;
'i' : ;
'o' : ;
'p' : ;
'a' : ;
's' : ;
'd' : ;
'f' : ;
'g' : ;
'h' : ;
'j' : ;
'k' : ;
'l' : ;
'z' : ;
'x' : ;
'c' : ;
'v' : ;
'b' : ;
'n' : ;
'm' : ;
'Q' : ;
'W' : ;
'E' : ;
'R' : ;
'T' : ;
'Y' : ;
'U' : ;
'I' : ;
'O' : ;
'P' : ;
'A' : ;
'S' : ;
'D' : ;
'F' : ;
'G' : ;
'H' : ;
'J' : ;
'K' : ;
'L' : ;
'Z' : ;
'X' : ;
'C' : ;
'V' : ;
'B' : ;
'N' : ;
'M' : ;
'0' : ;
'1' : ;
'2' : ;
'3' : ;
'4' : ;
'5' : ;
'6' : ;
'7' : ;
'8' : ;
'9' : ;
'(' : ;
')' : ;
'=' : ;
'?' : ;
'^' : ;
'\' : ;
'|' : ;
'!' : ;
'"' : ;
//'£' : ;
'$' : ;
'%' : ;
'&' : ;
'/' : ;
//'è' : ;
//'é' : ;
'*' : ;
'+' : ;
//'ç' : ;
//'ò' : ;
'@' : ;
//'°' : ;
//'à' : ;
'#' : ;
//'ù' : ;
'-' : ;
'_' : ;
'<' : ;
'>' : ;
'[' : ;
']' : ;
'{' : ;
'}' : ;
else
Case ORD(valore[i]) of
8 : ; //spazio
9 : ; //tab
10: ; //new line
13: ; //carriage return
else
ret:=true; //c'è un carattere che provoca errore
end;
end;
end;
result:=ret;
end;
procedure TExtendVK.StringToVKSend(valore: string; sleep_millisecond_between_characters: integer);
var
ret: boolean;
i: integer;
begin
ret:=false;
for i:=1 to Length(valore) do
begin
Case valore[i] of
'q' : MyPress(VK_Q,false, sleep_millisecond_between_characters);
'w' : MyPress(VK_W,false, sleep_millisecond_between_characters);
'e' : MyPress(VK_E,false, sleep_millisecond_between_characters);
'r' : MyPress(VK_R,false, sleep_millisecond_between_characters);
't' : MyPress(VK_T,false, sleep_millisecond_between_characters);
'y' : MyPress(VK_Y,false, sleep_millisecond_between_characters);
'u' : MyPress(VK_U,false, sleep_millisecond_between_characters);
'i' : MyPress(VK_I,false, sleep_millisecond_between_characters);
'o' : MyPress(VK_O,false, sleep_millisecond_between_characters);
'p' : MyPress(VK_P,false, sleep_millisecond_between_characters);
'a' : MyPress(VK_A,false, sleep_millisecond_between_characters);
's' : MyPress(VK_S,false, sleep_millisecond_between_characters);
'd' : MyPress(VK_D,false, sleep_millisecond_between_characters);
'f' : MyPress(VK_F,false, sleep_millisecond_between_characters);
'g' : MyPress(VK_G,false, sleep_millisecond_between_characters);
'h' : MyPress(VK_H,false, sleep_millisecond_between_characters);
'j' : MyPress(VK_J,false, sleep_millisecond_between_characters);
'k' : MyPress(VK_K,false, sleep_millisecond_between_characters);
'l' : MyPress(VK_L,false, sleep_millisecond_between_characters);
'z' : MyPress(VK_Z,false, sleep_millisecond_between_characters);
'x' : MyPress(VK_X,false, sleep_millisecond_between_characters);
'c' : MyPress(VK_C,false, sleep_millisecond_between_characters);
'v' : MyPress(VK_V,false, sleep_millisecond_between_characters);
'b' : MyPress(VK_B,false, sleep_millisecond_between_characters);
'n' : MyPress(VK_N,false, sleep_millisecond_between_characters);
'm' : MyPress(VK_M,false, sleep_millisecond_between_characters);
'Q' : MyPress(VK_Q,true, sleep_millisecond_between_characters);
'W' : MyPress(VK_W,true, sleep_millisecond_between_characters);
'E' : MyPress(VK_E,true, sleep_millisecond_between_characters);
'R' : MyPress(VK_R,true, sleep_millisecond_between_characters);
'T' : MyPress(VK_T,true, sleep_millisecond_between_characters);
'Y' : MyPress(VK_Y,true, sleep_millisecond_between_characters);
'U' : MyPress(VK_U,true, sleep_millisecond_between_characters);
'I' : MyPress(VK_I,true, sleep_millisecond_between_characters);
'O' : MyPress(VK_O,true, sleep_millisecond_between_characters);
'P' : MyPress(VK_P,true, sleep_millisecond_between_characters);
'A' : MyPress(VK_A,true, sleep_millisecond_between_characters);
'S' : MyPress(VK_S,true, sleep_millisecond_between_characters);
'D' : MyPress(VK_D,true, sleep_millisecond_between_characters);
'F' : MyPress(VK_F,true, sleep_millisecond_between_characters);
'G' : MyPress(VK_G,true, sleep_millisecond_between_characters);
'H' : MyPress(VK_H,true, sleep_millisecond_between_characters);
'J' : MyPress(VK_J,true, sleep_millisecond_between_characters);
'K' : MyPress(VK_K,true, sleep_millisecond_between_characters);
'L' : MyPress(VK_L,true, sleep_millisecond_between_characters);
'Z' : MyPress(VK_Z,true, sleep_millisecond_between_characters);
'X' : MyPress(VK_X,true, sleep_millisecond_between_characters);
'C' : MyPress(VK_C,true, sleep_millisecond_between_characters);
'V' : MyPress(VK_V,true, sleep_millisecond_between_characters);
'B' : MyPress(VK_B,true, sleep_millisecond_between_characters);
'N' : MyPress(VK_N,true, sleep_millisecond_between_characters);
'M' : MyPress(VK_M,true, sleep_millisecond_between_characters);
'0' : MyPress(VK_0,false, sleep_millisecond_between_characters);
'1' : MyPress(VK_1,false, sleep_millisecond_between_characters);
'2' : MyPress(VK_2,false, sleep_millisecond_between_characters);
'3' : MyPress(VK_3,false, sleep_millisecond_between_characters);
'4' : MyPress(VK_4,false, sleep_millisecond_between_characters);
'5' : MyPress(VK_5,false, sleep_millisecond_between_characters);
'6' : MyPress(VK_6,false, sleep_millisecond_between_characters);
'7' : MyPress(VK_7,false, sleep_millisecond_between_characters);
'8' : MyPress(VK_8,false, sleep_millisecond_between_characters);
'9' : MyPress(VK_9,false, sleep_millisecond_between_characters);
' ' : MyPress(VK_SPACE,true, sleep_millisecond_between_characters); //spazio ;
'|' : MyPress(VK_LCL_BACKSLASH,true, sleep_millisecond_between_characters); //spazio ;
'\' : MyPress(VK_LCL_BACKSLASH,false, sleep_millisecond_between_characters); //spazio ;
'=' : MyPress(VK_0,true, sleep_millisecond_between_characters);
'!' : MyPress(VK_1,true, sleep_millisecond_between_characters);
'"' : MyPress(VK_2,true, sleep_millisecond_between_characters);
//'£' : MyPress(VK_3,true, sleep_millisecond_between_characters);
'$' : MyPress(VK_4,true, sleep_millisecond_between_characters);
'%' : MyPress(VK_5,true, sleep_millisecond_between_characters);
'&' : MyPress(VK_6,true, sleep_millisecond_between_characters);
'/' : MyPress(VK_7,true, sleep_millisecond_between_characters);
'(' : MyPress(VK_8,true, sleep_millisecond_between_characters);
')' : MyPress(VK_9,true, sleep_millisecond_between_characters);
'''' : MyPress(VK_LCL_QUOTE,false, sleep_millisecond_between_characters);
',' : MyPress(VK_LCL_COMMA,false, sleep_millisecond_between_characters);
';' : MyPress(VK_LCL_COMMA,true, sleep_millisecond_between_characters);
else
Case ORD(valore[i]) of
8 : MyPress(VK_SPACE,true, sleep_millisecond_between_characters); //spazio
9 : MyPress(VK_TAB,true, sleep_millisecond_between_characters); //tab
10: ; //new line
13: MyPress(VK_RETURN,true, sleep_millisecond_between_characters); //carriage return
else
//non faccio nulla
end;
end;
end;
end;
procedure TExtendVK.MyPress(key: word; maiuscolo: boolean;
sleep_millisecond_between_characters: integer);
begin
if maiuscolo then
KeyInput.Apply([ssShift]);
KeyInput.Press(key);
if maiuscolo then
KeyInput.UnApply([ssShift]);
if sleep_millisecond_between_characters>0 then
begin
Sleep(sleep_millisecond_between_characters);
Application.ProcessMessages;
end;
end;
end.