webForumDet fria alternativet
Logga in / Bli medlem

Key capture

Programmering

1 svar · 223 visningar · startad av larsmark

Medlem sedan juni 20031 inlägg
Frågan#1

Vet någon hur man kan fånga tangentbordtryckningar i delphi? Förmodligen behöver man använa API:t. Jag har sökt men inte hittat något. Med tangentbordtryckningar menar jag alla, även om inte programmet är aktivt utan ligger i bakgrunden.

Medlem sedan juni 20022 599 inlägg
#2

Förmodligen behöver man använa API:t.

Ja, det måste man. I grova drag:

1. Du skapar en systemglobal tangentbords-hook med anropet:

SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, (HINSTANCE)hInstance, 0);

KeyboardProc är en funktion som du skriver själv och till vilken Windows kommer att skicka alla tangentnedtryckningar.

2. Kruxet är sen att SetWindowsHookEx måste anropas inne ifrån en Windows-dll ifall det är frågan om en global hook (anges av nollan på slutet). Du blir alltså tvungen att skriva en dll som du sen anropar från ditt Delphi-program.

Om du har tillgång till nån version av Visual C++ så har jag nog färdig C++-kod för själva dll:en som du kan få.

246 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)