www.pudn.com > heart.zip > Heart.cpp, change:1999-11-10,size:2500b


// Heart.cpp : Defines the initialization routines for the DLL. 
// 
 
#include "stdafx.h" 
#include "Heart.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
// 
//	Note! 
// 
//		If this DLL is dynamically linked against the MFC 
//		DLLs, any functions exported from this DLL which 
//		call into MFC must have the AFX_MANAGE_STATE macro 
//		added at the very beginning of the function. 
// 
//		For example: 
// 
//		extern "C" BOOL PASCAL EXPORT ExportedFunction() 
//		{ 
//			AFX_MANAGE_STATE(AfxGetStaticModuleState()); 
//			// normal function body here 
//		} 
// 
//		It is very important that this macro appear in each 
//		function, prior to any calls into MFC.  This means that 
//		it must appear as the first statement within the  
//		function, even before any object variable declarations 
//		as their constructors may generate calls into the MFC 
//		DLL. 
// 
//		Please see MFC Technical Notes 33 and 58 for additional 
//		details. 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// CHeartApp 
 
BEGIN_MESSAGE_MAP(CHeartApp, CWinApp) 
	//{{AFX_MSG_MAP(CHeartApp) 
		// NOTE - the ClassWizard will add and remove mapping macros here. 
		//    DO NOT EDIT what you see in these blocks of generated code! 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
///////////////////////////////////////////////////////////////////////////// 
// CHeartApp construction 
CHeartApp theApp; 
 
#pragma data_seg("Shared") 
HWND hSendWindow = NULL; 
HHOOK hHook=NULL; 
HINSTANCE hDll=NULL; 
#pragma data_seg() 
 
CHeartApp::CHeartApp() 
{ 
	// TODO: add construction code here, 
	// Place all significant initialization in InitInstance 
} 
 
CHeartApp::~CHeartApp() 
{ 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// The one and only CHeartApp object 
 
__declspec(dllexport) LRESULT CALLBACK  MyMouse( int nCode, WPARAM wParam, LPARAM lParam) 
{ 
	MOUSEHOOKSTRUCT m = *((MOUSEHOOKSTRUCT *) lParam); 
	if (hSendWindow) { 
		::SendMessage(hSendWindow, WM_MYMOVE, m.pt.x, m.pt.y); 
	} 
	return ::CallNextHookEx(hHook, nCode, wParam, lParam); 
} 
 
__declspec(dllexport) void SetWindowsHandle(HWND h) 
{ 
	hSendWindow = h; 
} 
 
__declspec(dllexport) void SetHook() 
{ 
	hDll = GetModuleHandle("heart.dll"); 
	if (hDll && !hHook) hHook= SetWindowsHookEx(WH_MOUSE, MyMouse, hDll, NULL); 
} 
__declspec(dllexport) void UnHook() 
{ 
	if (hHook) UnhookWindowsHookEx(hHook); 
}