Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

113 lines
2.4 KiB

#include "stdafx.h"
#include "cpaldc.h"
static LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam);
static HHOOK g_hHook;
const char *txtFlashClassName = "Flash";
/***************************************************************************
FUNCTION: SetMouseHook
PURPOSE: Sets a mouse hook to catch mouse messages, and highlight
the window that will be receiving them.
PARAMETERS:
fInstall -- TRUE to install, FALSE to remove
hwndNotify -- Window to notify on mouse up
RETURNS: TRUE if successful
COMMENTS:
MODIFICATION DATES:
30-Jul-1995 [ralphw]
Tweaked from randyfe's sources
***************************************************************************/
BOOL STDCALL SetMouseHook(BOOL fInstall, HWND hwndNotify)
{
if (fInstall) {
g_hHook = SetWindowsHookEx(WH_MOUSE, MouseHookProc, hinstDll, 0);
}
else
{
if (g_hHook)
if (UnhookWindowsHookEx(g_hHook))
{
g_hHook = NULL;
}
}
if ((fInstall && g_hHook != NULL) || (!fInstall && g_hHook == NULL))
return TRUE;
else
return FALSE;
}
/***************************************************************************
FUNCTION: MouseHookProc
PURPOSE:
PARAMETERS:
nCode
wParam
lParam
RETURNS:
COMMENTS:
WARNING!!! DS will not necessarily be the same as the dll's, so
you can NOT use any global or static data. We rely on being able
to find Flash's window, and send messages to Flash to deal with
any functionality that requires global/static data. The SendMessage()
call sets up the DS correctly.
MODIFICATION DATES:
30-Jul-1995 [ralphw]
***************************************************************************/
static LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0)
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
#ifdef _DEBUG
MOUSEHOOKSTRUCT* pmh = (MOUSEHOOKSTRUCT*) lParam;
#else
#define pmh ((MOUSEHOOKSTRUCT*) lParam)
#endif
switch (wParam)
{
case WM_NCLBUTTONDOWN:
case WM_NCRBUTTONDOWN:
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
{
HWND hwnd = FindWindow(txtFlashClassName, NULL);
SendMessage(hwnd, WMP_WINDOW_HILIGHT, FALSE, 0);
SendMessage(hwnd, WMP_WINDOW_CAPTURE, 0, POINTTOPOINTS(pmh->pt));
return TRUE; // don't pass the message through
}
case WM_NCMOUSEMOVE:
case WM_MOUSEMOVE:
{
HWND hwnd = FindWindow(txtFlashClassName, NULL);
SendMessage(hwnd, WMP_WINDOW_HILIGHT, TRUE,
POINTTOPOINTS(pmh->pt));
}
break;
}
return 0;
}