2012년 11월 13일 화요일
<펌> SetWindowsHookEx 이용 Keyboard Hook
unit UKeyHookMain;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
var
Form1: TForm1;
HookID: HHOOK;
procedure KeybdHook;
procedure KeybdUnhook;
implementation
{$R *.dfm}
type
PKeyHookStruct = ^TKeyHookStruct;
TKeyHookStruct = record
vkCode: Integer;
ScanCode: Integer;
Flags: Integer;
Time: Integer;
dwExtraInfo: Integer;
end;
// 키 입력 필터링 함수
function LLKeyHookFunc(HookCode: Integer; KeyCode: wParam; kStrokeInfo: lParam): LResult; stdcall;
var
PKeyHook: PKeyHookStruct;
idlestate: boolean;
begin
// 키 정보 받아오기
PKeyHook := Ptr(kStrokeInfo);
if HookCode >= 0 then begin
// SHIFT + F2
// Showmessage(Format('%d',[GetAsyncKeyState(VK_SHIFT)]));
if (PKeyHook.vkCode = VK_F2) and (GetAsyncKeyState(VK_SHIFT) < -32766) then begin
// 항상 맨 위에
Form1.FormStyle := fsStayOnTop;
Result := 1;
end
// SHIFT + F3
else if (PKeyHook.vkCode = VK_F3) and (GetAsyncKeyState(VK_SHIFT) < -32766) then begin
// 항상 맨 위에 아님..
Form1.FormStyle := fsNormal;
Result := 1;
end;
idleState := true;
end;
// 필터링 된 키가 아니라면 계속 진행
Result := CallNextHookEx(HookID, HookCode, KeyCode, kStrokeInfo);
end;
procedure KeybdHook;
const
WH_KEYBOARD_LL = 13;
begin
HookID := SetWindowsHookEx(WH_KEYBOARD_LL, @LLKeyHookFunc, hInstance, 0);
end;
procedure KeybdUnhook;
begin
UnHookWindowsHookEx(HookID);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
KeybdUnHook;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
KeybdHook;
end;
end.
피드 구독하기:
댓글 (Atom)
델파이 12.1이냐 11.3이냐?
델파이가 12.1이 나왔습니다. 혹시 11.3버전의 커뮤니티버전이 필요하시는분이 있을 수 있을 것 같아 https://altd.embarcadero.com/.../RADStudio_11_3_esd_28... 와 이것 찾느랴 엄청고생함.
-
윈도우10에 있는 음성 녹음기는 간단하게 녹음 할 때 간편하고 좋다. 곰 녹음기를 사용하면 오늘기준으로 CPU 점유율이 35% 이상 올라가 맥의 팬이 돌아간다. 윈10의 음성녹음기는 좋은 데 저장 폴더가 디폴트로 되어 있어 사용하기 불편하다. ...
-
클라이언트가 HTTP프로토콜을 이용해서 서버에 무언가를 전달할 때 Get 이나 Post가 사용됩니다. GET은 주소줄에 값이 ?뒤에 쌍으로 이어붙고 여러개일 경우에는 & 으로 반복하고, POST는 숨겨져서(body안에) 보내집니다. GET...
-
일단은 Python 사이트에가서 dmg 파일을 다운받아 설치합니다. m1 프로세서일경우에는 아래에 있는 파일이겠죠. 터미널을 열어 파이썬의 위치를 확인합니다. 파이썬3의 위치로 이동합니다. [cd /usr/local/bin] 파인더를 엽니다. [...
댓글 없음:
댓글 쓰기