Heart.cpp
上传用户:f12e50
上传日期:2007-01-04
资源大小:21k
文件大小:2k
源码类别:

其他小程序

开发平台:

Visual C++

  1. // Heart.cpp : Defines the initialization routines for the DLL.
  2. //
  3. #include "stdafx.h"
  4. #include "Heart.h"
  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #undef THIS_FILE
  8. static char THIS_FILE[] = __FILE__;
  9. #endif
  10. //
  11. // Note!
  12. //
  13. // If this DLL is dynamically linked against the MFC
  14. // DLLs, any functions exported from this DLL which
  15. // call into MFC must have the AFX_MANAGE_STATE macro
  16. // added at the very beginning of the function.
  17. //
  18. // For example:
  19. //
  20. // extern "C" BOOL PASCAL EXPORT ExportedFunction()
  21. // {
  22. // AFX_MANAGE_STATE(AfxGetStaticModuleState());
  23. // // normal function body here
  24. // }
  25. //
  26. // It is very important that this macro appear in each
  27. // function, prior to any calls into MFC.  This means that
  28. // it must appear as the first statement within the 
  29. // function, even before any object variable declarations
  30. // as their constructors may generate calls into the MFC
  31. // DLL.
  32. //
  33. // Please see MFC Technical Notes 33 and 58 for additional
  34. // details.
  35. //
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CHeartApp
  38. BEGIN_MESSAGE_MAP(CHeartApp, CWinApp)
  39. //{{AFX_MSG_MAP(CHeartApp)
  40. // NOTE - the ClassWizard will add and remove mapping macros here.
  41. //    DO NOT EDIT what you see in these blocks of generated code!
  42. //}}AFX_MSG_MAP
  43. END_MESSAGE_MAP()
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CHeartApp construction
  46. CHeartApp theApp;
  47. #pragma data_seg("Shared")
  48. HWND hSendWindow = NULL;
  49. HHOOK hHook=NULL;
  50. HINSTANCE hDll=NULL;
  51. #pragma data_seg()
  52. CHeartApp::CHeartApp()
  53. {
  54. // TODO: add construction code here,
  55. // Place all significant initialization in InitInstance
  56. }
  57. CHeartApp::~CHeartApp()
  58. {
  59. }
  60. /////////////////////////////////////////////////////////////////////////////
  61. // The one and only CHeartApp object
  62. __declspec(dllexport) LRESULT CALLBACK  MyMouse( int nCode, WPARAM wParam, LPARAM lParam)
  63. {
  64. MOUSEHOOKSTRUCT m = *((MOUSEHOOKSTRUCT *) lParam);
  65. if (hSendWindow) {
  66. ::SendMessage(hSendWindow, WM_MYMOVE, m.pt.x, m.pt.y);
  67. }
  68. return ::CallNextHookEx(hHook, nCode, wParam, lParam);
  69. }
  70. __declspec(dllexport) void SetWindowsHandle(HWND h)
  71. {
  72. hSendWindow = h;
  73. }
  74. __declspec(dllexport) void SetHook()
  75. {
  76. hDll = GetModuleHandle("heart.dll");
  77. if (hDll && !hHook) hHook= SetWindowsHookEx(WH_MOUSE, MyMouse, hDll, NULL);
  78. }
  79. __declspec(dllexport) void UnHook()
  80. {
  81. if (hHook) UnhookWindowsHookEx(hHook);
  82. }