Actually, is there any possible of doing this without using globals? (I'm getting linker errors with this)
Is the only way to make everything in the class static?
Err:
Code:
error C2352: 'CKeyboardHook::hookProcess' : illegal call of non-static member function
Updated Code
keyboardhook.h
Code:
#ifndef GUARD_KEYBOARDHOOK_H
#define GUARD_KEYBOARDHOOK_H
#define CALL_NEXT_HOOK 1
#define DROP_NEXT_HOOK 2
#include <windows.h>
#include <vector>
using std::vector;
class CKeyboardHook
{
public:
int hookProcess ( int nCode, WPARAM wParam, LPARAM lParam );
static LRESULT CALLBACK LLKeyboardHook ( int nCode, WPARAM wParam, LPARAM lParam );
vector<DWORD> keysDown;
vector<DWORD> keysToStop;
HINSTANCE hExe;
static HHOOK hHook;
bool keyIsDown ( int vkey );
void stopKey ( int vkey );
void resumeKey ( int vkey );
void initHook();
void killHook();
};
#endif
keyboardhook.cpp
Code:
#include "stdafx.h"
#include "keyboardhook.h"
LRESULT CALLBACK CKeyboardHook::LLKeyboardHook ( int nCode, WPARAM wParam, LPARAM lParam )
{
if ( hookProcess ( nCode, wParam, lParam ) == CALL_NEXT_HOOK )
{
return CallNextHookEx( hHook, nCode, wParam, lParam);
}
else
{
return TRUE;
}
}
void CKeyboardHook::initHook()
{
hExe = GetModuleHandle ( NULL );
hHook = SetWindowsHookEx ( WH_KEYBOARD_LL, (HOOKPROC)LLKeyboardHook, hExe, NULL );
}
void CKeyboardHook::killHook()
{
UnhookWindowsHookEx(hHook);
}
bool CKeyboardHook::keyIsDown(int vkey)
{
return false;
}
void CKeyboardHook::stopKey ( int vkey )
{
}
void CKeyboardHook::resumeKey ( int vkey )
{
}