Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
122
Task/Keyboard-macros/Delphi/keyboard-macros.delphi
Normal file
122
Task/Keyboard-macros/Delphi/keyboard-macros.delphi
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
program Key_Bindings_test;
|
||||
|
||||
{$APPTYPE CONSOLE}
|
||||
|
||||
{$R *.res}
|
||||
|
||||
uses
|
||||
System.SysUtils,
|
||||
Winapi.Windows,
|
||||
Messages,
|
||||
Classes;
|
||||
|
||||
type
|
||||
// Class of application without window
|
||||
TWindowlessApplication = class
|
||||
private
|
||||
Terminated: Boolean;
|
||||
F7_id: Word;
|
||||
F6_id: Word;
|
||||
WIN_A: Word;
|
||||
procedure HandleMessage;
|
||||
public
|
||||
Handle: THandle;
|
||||
constructor Create;
|
||||
destructor Destroy;
|
||||
procedure Run;
|
||||
end;
|
||||
|
||||
{ TWindowlessApplication }
|
||||
|
||||
constructor TWindowlessApplication.Create;
|
||||
begin
|
||||
// Allocate handle to receve a mensages
|
||||
Handle := CreateWindowEx(WS_EX_TOOLWINDOW, 'TWindowlessApplication', '',
|
||||
WS_POPUP, 0, 0, 0, 0, 0, 0, HInstance, nil);
|
||||
|
||||
// Set the key bind for WIN+A, F6 and F7
|
||||
WIN_A := GlobalAddAtom('Hotkey_WIN_A');
|
||||
F6_id := GlobalAddAtom('Hotkey_F6');
|
||||
F7_id := GlobalAddAtom('Hotkey_F7');
|
||||
|
||||
RegisterHotKey(Handle, WIN_A, MOD_WIN, ord('A'));
|
||||
RegisterHotKey(Handle, F6_id, 0, VK_F6);
|
||||
RegisterHotKey(Handle, F7_id, 0, VK_F7);
|
||||
|
||||
// Set flag to keep running application
|
||||
Terminated := false;
|
||||
end;
|
||||
|
||||
destructor TWindowlessApplication.Destroy;
|
||||
begin
|
||||
// Remove key bind
|
||||
UnRegisterHotKey(Handle, WIN_A);
|
||||
UnRegisterHotKey(Handle, F6_id);
|
||||
UnRegisterHotKey(Handle, F7_id);
|
||||
|
||||
GlobalDeleteAtom(WIN_A);
|
||||
GlobalDeleteAtom(F6_id);
|
||||
GlobalDeleteAtom(F7_id);
|
||||
|
||||
// Deallocate handle
|
||||
DeallocateHWnd(Handle);
|
||||
end;
|
||||
|
||||
procedure TWindowlessApplication.Run;
|
||||
begin
|
||||
// Application loop
|
||||
repeat
|
||||
// Deal with new messages
|
||||
HandleMessage();
|
||||
until Terminated;
|
||||
end;
|
||||
|
||||
procedure TWindowlessApplication.HandleMessage;
|
||||
var
|
||||
Msg: TMsg;
|
||||
begin
|
||||
// Check for new messages
|
||||
if PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then
|
||||
begin
|
||||
// Extract it
|
||||
PeekMessageW(Msg, 0, 0, 0, PM_REMOVE);
|
||||
|
||||
// Check if Msg is a HOTKEY mensage
|
||||
if Msg.message = WM_HOTKEY then
|
||||
begin
|
||||
// Check if the hotkey is for Win+A
|
||||
if Msg.wParam = WIN_A then
|
||||
begin
|
||||
// Report and terminate
|
||||
writeln('Win + A pressed !'#10);
|
||||
writeln('Bye bye');
|
||||
Terminated := true;
|
||||
end;
|
||||
|
||||
// Check if the hotkey is for F6
|
||||
if Msg.wParam = F6_id then
|
||||
begin
|
||||
// Report and terminate
|
||||
writeln('F6 pressed !');
|
||||
end;
|
||||
|
||||
// Check if the hotkey is for F7
|
||||
if Msg.wParam = F7_id then
|
||||
begin
|
||||
// Report and terminate
|
||||
writeln('F7 pressed !');
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
App: TWindowlessApplication;
|
||||
|
||||
begin
|
||||
App := TWindowlessApplication.Create;
|
||||
Writeln('Waiting user press F6 ou F7, then press WIN+A for terminate');
|
||||
App.Run;
|
||||
App.Destroy;
|
||||
readln;
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue