日期:2014-05-17 浏览次数:20935 次
#include "hookkey.h"
#pragma code_seg("code")
HWND phmain = NULL ;
HHOOK g_keyhook = NULL ;
HHOOK g_mousehook = NULL ;
#pragma code_seg()
#pragma comment(linker , "/SECTION:code,RWS")
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
// switch (ul_reason_for_call)
// {
// case DLL_PROCESS_ATTACH:
// case DLL_THREAD_ATTACH:
// case DLL_THREAD_DETACH:
// case DLL_PROCESS_DETACH:
// break;
// }
return TRUE;
}
LRESULT CALLBACK KeyboardProc( int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if (code <0 ||code== HC_NOREMOVE )
{
return CallNextHookEx(g_keyhook , code , wParam ,lParam);
}
if (code & 0x40000000) //消息重复就交给下一个HOOK链
{
return CallNextHookEx(g_keyhook , code , wParam , lParam );
}
PostMessage( phmain , WM_KEY , wParam , lParam );
return CallNextHookEx(g_keyhook , code , wParam,lParam );
}
LRESULT CALLBACK MouseProc( int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // mouse coordinates
)
{
return 1;
}
HOOKKEY_API void sethook(int instal , HWND mhwnd )
{
if (instal == 1)
{
phmain = mhwnd ;
g_keyhook =SetWindowsHookEx(WH_KEYBOARD ,KeyboardProc , GetModuleHandle("hookkey") , 0 );
}
else
{
UnhookWindowsHookEx(g_keyhook);
}
}
HOOKKEY_API void setsss(int instal , HWND mhwnd )
{
if (instal == 1)
{
phmain = mhwnd ;
g_mousehook =SetWindowsHookEx(WH_MOUSE ,MouseProc , GetModuleHandle("hookkey") , 0 );
}
else
{
UnhookWindowsHookEx(g_mousehook);
}
}
char szkey[80];
GetKeyNameText(lParam, szkey , 80);
m_code += szkey ;
m_code += "\r\n" ;
UpdateData(false);