Source .DLL:
Code:
#include <windows.h>
#pragma data_seg("SHARED_DATA")
HHOOK hGlobalHook = NULL;
#pragma data_seg()
__declspec(dllexport) LRESULT CALLBACK FillKeyboard(int nCode, WPARAM wParam, LPARAM lParam)
{
if ((nCode == HC_ACTION) && (wParam == 13))
{
MessageBox(0, "sonhn say hello :)", "Hello", 0);
return 1;
}
return CallNextHookEx(hGlobalHook, nCode, wParam, lParam);
}
Main:
Code:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
HHOOK hHook = NULL;
HMODULE hDll;
BOOL InstallHook();
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
if ((hDll=LoadLibrary((LPCTSTR)"TestDLL2.dll")) == NULL) MessageBox(0,"error","load library",0);
hHook = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)GetProcAddress(hDll,(LPCSTR)"FillKeyboard"),hDll,0);
if (!hHook) cout << "SetWindowsHookEx Call Failed, Error number: " << GetProcAddress(hDll,(LPCSTR)"FillKeyboard") << endl;
getch();
}
But... when i run *.exe then...
Code:
SetWindowsHookEx Call Failed, Error number: 0
Help me!
Thanks