Så nue r der gået et par dage og jeg har rodet lidt med programmet når jeg har haft tid. Jeg er kommet frem til følgende kode:
#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
#include <windows.h>
#include <stdlib.h>
#include <winable.h>
#include <Tchar.h>
HHOOK MouseHook;
void SendKey(){
INPUT key;
key.type = INPUT_KEYBOARD;
key.ki.wVk = 0x67;
key.ki.dwFlags = 0;
key.ki.time = 0;
key.ki.wScan = 0;
key.ki.dwExtraInfo = 0;
SendInput(sizeof(key)/sizeof(INPUT),&key,sizeof(INPUT));
key.ki.dwExtraInfo = KEYEVENTF_KEYUP;
SendInput(sizeof(key)/sizeof(INPUT),&key,sizeof(INPUT));
}
LRESULT LowLevelMouseProc(int nCode, WPARAM wParam , LPARAM lParam)
{
MSLLHOOKSTRUCT *HookStruct = (MSLLHOOKSTRUCT *)lParam;
if(HookStruct->mouseData == WM_LBUTTONDOWN)
{
SendKey();
return TRUE;
}
return CallNextHookEx(MouseHook, nCode , wParam , lParam);
}
void InstallHook(void)
{
if(MouseHook)
return;
MouseHook = SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC )LowLevelMouseProc, GetModuleHandle(0), 0);
if(!MouseHook)
{
MessageBox(0, _T("Failed to install Hook"), _T("Rebinder"), MB_OK);
}
else
{
MessageBox(0, _T("Hook Installed!"), _T("Rebinder"), MB_OK);
}
}
void UnInstallHook(void)
{
if(MouseHook)
UnhookWindowsHookEx(MouseHook);
MouseHook = 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
InstallHook();
MessageBox(0,_T("Ok to exit"),_T("Ok to Exit"),MB_YESNO);
UnInstallHook();
}
Men når trykker "Start Debugging" i VC++ kommer den med en fejl efter den har compilet koden.
"Unhandled exception at 0x00000000 in Test.exe: 0xC0000005: Access violation reading location 0x00000000."
Jeg kan lige nå at se MessangeBoxen Hook installed hvorefter fejlen kommer.
I det efterfølgende skærm billede er der en grøn pil der peger på linien:
MessageBox(0, _T("Hook Installed!"), _T("Rebinder"), MB_OK);
Håber I kan hjælpe med at komme over dette problem : )
På forhånd tak
-Troels