-
July 30th, 2011, 08:00 AM
#1
Global Keyboard hook not working
I have been trying to make Global Keyboard hook program in visual C++ that writes keystrokes to a file "log.txt"..I am new to windows programming and i have gone through the msdn library to get an understanding of hooks....I think i have understood the concept theoretically but when i implement the code, it doesn't seem towork..The compiler doesn't show any error in both the DLL file and EXE file....Moreover the text file "log.txt" never gets created...
Here are the code files
First the DLL file:
[code]
#include<windows.h>
#include<stdio.h>
HHOOK g_hhk;
__declspec(dllexport) LRESULT CALLBACK KeyProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode>=0)
{
char ch;
FILE *fp;
fp=fopen("log.txt","a");
if((wParam==VK_SPACE)||(wParam==VK_RETURN)||(wParam>=0x2f ) &&(wParam<=0x100))
{
if(wParam==VK_RETURN)
ch='\n';
fwrite(&ch,1,1,fp);
}
else
{
BYTE ks[256];
GetKeyboardState(ks);
WORD w;
UINT scan;
scan=0;
ToAscii(wParam,scan,ks,&w,0);
ch =char(w);
fwrite(&ch,1,1,fp); // copy character to log file
}
fclose(fp);
}
return CallNextHookEx(g_hhk, nCode, wParam, lParam);
}[\code]
Now the Exe file:
Code:
#include<windows.h>
HOOKPROC hkprckb;
static HINSTANCE hinstDLL;
static HHOOK hhookkb;
int WINAPI WinMain(HINSTANCE hInstance1,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
hinstDLL=LoadLibrary(TEXT("C:\\Documents and Settings\\Attar Singh\\My Documents\\Visual Studio 2008\\Projects\\key\\Debug\\key.dll"));
hkprckb=(HOOKPROC)GetProcAddress(hinstDLL,"KeyProc");
hhookkb=SetWindowsHookEx(
WH_KEYBOARD_LL,
hkprckb,
hinstDLL,
0);
//UnhookWindowsHookEx(hhookkb);
MessageBox(NULL,NULL,NULL,MB_OK);
return 1;
}
This program is giving me nightmares...Any sort of help will be greatly appreciated...thanks in advance...!!
-
July 30th, 2011, 11:43 AM
#2
Re: Global Keyboard hook not working
The thread that installed the hook must have a message loop.
-
July 31st, 2011, 05:11 AM
#3
Re: Global Keyboard hook not working
I am new to windows programming
This program is giving me nightmares...
So maybe #1 is the reason for #2. Why don't you start with something less tricky?
Last edited by Igor Vartanov; July 31st, 2011 at 05:16 AM.
Best regards,
Igor
-
August 2nd, 2011, 04:23 PM
#4
Re: Global Keyboard hook not working
Why are you using dll to install WH_KEYBOARD_LL type hook. This type of hook is global; period. You can install this hook in your executable and it will work like a charm.
On the other hand, I would follow Igor’s advice.
There are only 10 types of people in the world:
Those who understand binary and those who do not.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|