zpzDll.cpp 968 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // zpzDll.cpp : 定义 DLL 应用程序的导出函数。
  2. //
  3. #include "stdafx.h"
  4. #include "zpzDll.h"
  5. #include <windows.h>
  6. #pragma data_seg("shared")
  7. HWND g_hWnd = NULL;
  8. HHOOK g_Hook = NULL;
  9. #pragma data_seg()
  10. #pragma comment(linker,"/SECTION:shared,RWS")
  11. extern HINSTANCE g_Inst;
  12. /*
  13. *钩子过程函数,不做任何处理,因为目的仅仅是把dll注入到进程
  14. **/
  15. LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
  16. {
  17. //MessageBox(NULL, L"2222222222222", L"2222222222222222222", MB_OK);
  18. return CallNextHookEx(g_Hook, nCode, wParam, lParam);
  19. }
  20. /*
  21. *对所有进程安装钩子,所有新开进程都会加载这个dll
  22. **/
  23. BOOL InstallHook()
  24. {
  25. if (g_Hook == NULL)
  26. {
  27. g_Hook = SetWindowsHookEx(WH_KEYBOARD, CBTProc, g_Inst, 0);
  28. if (g_Hook != NULL)
  29. {
  30. return TRUE;
  31. }
  32. }
  33. return FALSE;
  34. }
  35. void UninstallHook()
  36. {
  37. if (UnhookWindowsHookEx(g_Hook))
  38. {
  39. g_Hook = NULL;
  40. }
  41. }
  42. void SetHwnd(HWND hWnd)
  43. {
  44. g_hWnd = hWnd;
  45. }