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