zpzDll.cpp 893 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. return CallNextHookEx(g_Hook, nCode, wParam, lParam);
  18. }
  19. /*
  20. *对所有进程安装钩子,所有新开进程都会加载这个dll
  21. **/
  22. BOOL InstallHook()
  23. {
  24. if (g_Hook == NULL)
  25. {
  26. g_Hook = SetWindowsHookEx(WH_CBT, CBTProc, g_Inst, 0);
  27. if (g_Hook != NULL)
  28. {
  29. return TRUE;
  30. }
  31. }
  32. return FALSE;
  33. }
  34. void UninstallHook()
  35. {
  36. if (UnhookWindowsHookEx(g_Hook))
  37. {
  38. g_Hook = NULL;
  39. }
  40. }
  41. void SetHwnd(HWND hWnd)
  42. {
  43. g_hWnd = hWnd;
  44. }