Knowledge Base Nr: 00035 TaskBarIcon_KeyboardHook_DLL.c - http://www.swe-kaiser.de

Downloads:

einsatz von task bar icons und tastatur-hook (DLL part)

  
#include <windows.h>

HHOOK hPunktHook; /* Handle auf die Hook-Funktion */

/*****************/
/* Hook-Funktion */
/*****************/
LRESULT CALLBACK PunktHook(int nCode, WPARAM wParam, LPARAM lParam)
{
HWND hwnd;
LPARAM scancode;

static int count = 0;

if (nCode==HC_ACTION)
{
if (wParam==VK_DECIMAL)
{
count++;

scancode=OemKeyScan('.')<<16;/* Scancode vom Punkt ermitteln */
lParam &= 0xFF00FFFF; /* durch Maskieren aus einem */
lParam |= scancode; /* Komma einen Punkt machen */
wParam = 190;

hwnd=GetFocus(); /* Fenster-Handle besorgen */
if (hwnd==NULL) /* etwa eine DOS-Box ? */
hwnd=GetForegroundWindow();/* dann geht diese Methode */

if ((lParam & 0x8000000) == 0x0)
PostMessage(hwnd,WM_KEYDOWN,wParam,lParam);

if ((lParam & 0x8000000) == 0x80000000)
PostMessage(hwnd,WM_KEYUP,wParam,lParam);

return 1;
}
}

return CallNextHookEx(hPunktHook, nCode, wParam, lParam);
}

/**************************************/
/* Initialisierung der HOOK-Funktion */
/**************************************/
void DLLInit(HINSTANCE hDLL, BOOL install)
{
HOOKPROC lpPunktHook;

if (install==TRUE)
{
lpPunktHook = (HOOKPROC)GetProcAddress(hDLL, "PunktHook");
hPunktHook = SetWindowsHookEx(WH_KEYBOARD, lpPunktHook, hDLL, 0);
}
else
UnhookWindowsHookEx(hPunktHook);
}