1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
unit u_scancode;
{$mode objfpc}{$H+}
interface
procedure SendKeyPress(FScanCode, FCombinaison: integer; FAppli: string);
implementation
uses
Windows, Forms;
procedure SendKeyPress(FScanCode, FCombinaison: integer; FAppli: string);
var
whandle: hwnd;
FVk_Code: integer;
begin
FVk_Code := MapVirtualKey(FScanCode, MAPVK_VSC_TO_VK); // conversion du scancode en Vk_Code correspondant;
if Fvk_Code = 0 then
Fvk_Code := 51;
wHandle := findWindow(nil, 'Falcon BMS');
SetForeGroundWindow(whandle);
case Fcombinaison of
0:
begin // touche seule
keybd_event(FVk_Code, FScanCode, 0, 0);// touche pressée
keybd_event(FVk_Code, FScanCode, KEYEVENTF_KEYUP, 0);//Touche relevée
end;
1:
begin // touche SHIFT
keybd_event(VK_SHIFT, 42, 0, 0);
keybd_event(FVk_Code, FScanCode, 0, 0);
keybd_event(FVk_Code, FScanCode, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 42, KEYEVENTF_KEYUP, 0);
end;
2:
begin // touche CTRL
keybd_event(VK_CONTROL, 29, 0, 0);
keybd_event(FVk_Code, FScanCode, 0, 0);
keybd_event(FVk_Code, FScanCode, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 29, KEYEVENTF_KEYUP, 0);
end;
3:
begin // touche SHIFT + CTRL
keybd_event(VK_SHIFT, 42, 0, 0);
SetForeGroundWindow(whandle);
keybd_event(VK_CONTROL, 29, 0, 0);
keybd_event(FVk_Code, FScanCode, 0, 0);
keybd_event(FVk_Code, FScanCode, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 29, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 42, 0, 0);
end;
4:
begin // touche ALT
keybd_event(MapVirtualKey(56, MAPVK_VSC_TO_VK), 56, 0, 0); //ALT
keybd_event(FVk_Code, FScanCode, 0, 0);
keybd_event(FVk_Code, FScanCode, KEYEVENTF_KEYUP, 0);
keybd_event(MapVirtualKey(56, MAPVK_VSC_TO_VK), 56, KEYEVENTF_KEYUP, 0);
end;
5:
begin // touche SHIFT + ALT
keybd_event(VK_SHIFT, 42, 0, 0);
keybd_event(VK_LMENU, 56, 0, 0); //ALT
keybd_event(FVk_Code, FScanCode, 0, 0);
keybd_event(FVk_Code, FScanCode, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LMENU, 56, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 42, KEYEVENTF_KEYUP, 0);
end;
6:
begin // touche CTRL + ALT
keybd_event(VK_CONTROL, 29, 0, 0);
keybd_event(VK_LMENU, 56, 0, 0); //ALT
keybd_event(FVk_Code, FScanCode, 0, 0);
keybd_event(FVk_Code, FScanCode, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LMENU, 56, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 29, KEYEVENTF_KEYUP, 0);
end;
7:
begin // touche SHIFT + CONTROL + ALT
keybd_event(VK_SHIFT, 42, 0, 0);
keybd_event(VK_CONTROL, 29, 0, 0);
keybd_event(VK_LMENU, 56, 0, 0); //ALT
keybd_event(FVk_Code, FScanCode, 0, 0);
keybd_event(FVk_Code, FScanCode, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LMENU, 56, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 29, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 42, KEYEVENTF_KEYUP, 0);
end;
end;
end;
end. |
Partager