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.
207 lines
5.9 KiB
207 lines
5.9 KiB
#include <mmc.h>
|
|
#include <winuser.h>
|
|
#include <tchar.h>
|
|
|
|
#include "globals.h"
|
|
|
|
#define MMC_CRACK_MESSAGES 1
|
|
|
|
static TCHAR *MMCN_CrackVerb(MMC_CONSOLE_VERB verb)
|
|
{
|
|
static TCHAR error[64];
|
|
|
|
switch( verb )
|
|
{
|
|
case MMC_VERB_NONE:
|
|
return _T("NONE");
|
|
case MMC_VERB_OPEN:
|
|
return _T("OPEN");
|
|
case MMC_VERB_COPY:
|
|
return _T("COPY");
|
|
case MMC_VERB_PASTE:
|
|
return _T("PASTE");
|
|
case MMC_VERB_DELETE:
|
|
return _T("DELETE");
|
|
case MMC_VERB_PROPERTIES:
|
|
return _T("PROPERTIES");
|
|
case MMC_VERB_RENAME:
|
|
return _T("RENAME");
|
|
case MMC_VERB_REFRESH:
|
|
return _T("REFRESH");
|
|
case MMC_VERB_PRINT:
|
|
return _T("PRINT");
|
|
case MMC_VERB_CUT:
|
|
return _T("CUT");
|
|
default:
|
|
_sntprintf( error, ARRAYLEN(error) - 1, _T("Unknown verb id %d"), verb );
|
|
error[ ARRAYLEN(error) - 1 ] = NULL;
|
|
return error;
|
|
}
|
|
}
|
|
|
|
void MMCN_Crack(
|
|
BOOL bComponentData,
|
|
IDataObject *pDataObject,
|
|
IComponentData *pCompData,
|
|
IComponent *pComp,
|
|
MMC_NOTIFY_TYPE event,
|
|
LPARAM arg,
|
|
LPARAM param )
|
|
{
|
|
|
|
#ifdef MMC_CRACK_MESSAGES
|
|
|
|
TCHAR message[256] = {0};
|
|
|
|
if( TRUE == bComponentData )
|
|
OutputDebugString(_T("IComponentData::Notify( "));
|
|
else
|
|
OutputDebugString(_T("IComponent::Notify( "));
|
|
|
|
_sntprintf( message, ARRAYLEN( message ), _T( "DataObject: %08p, CompData: %08p, Comp: %08p ) - "), pDataObject, pCompData, pComp );
|
|
message[ ARRAYLEN(message) - 1 ] = NULL;
|
|
OutputDebugString( message );
|
|
|
|
switch( event )
|
|
{
|
|
case MMCN_ACTIVATE:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_ACTIVATE\n\tActivate: %d\n"), arg);
|
|
break;
|
|
|
|
case MMCN_ADD_IMAGES:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_ADD_IMAGES\n\tImage List: %08x\n\tScope Item: %08x\n"), arg, param);
|
|
break;
|
|
|
|
case MMCN_BTN_CLICK:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_BTN_CLICK\n\tVerb: %ws\n"), MMCN_CrackVerb((MMC_CONSOLE_VERB)param));
|
|
break;
|
|
|
|
case MMCN_COLUMN_CLICK:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_COLUMN_CLICK\n\tColumn: %d\n\tSort Option: %d\n"), arg, param);
|
|
break;
|
|
|
|
case MMCN_COLUMNS_CHANGED:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_COLUMNS_CHANGED\n"));
|
|
break;
|
|
|
|
case MMCN_CONTEXTHELP:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_CONTEXTHELP\n"));
|
|
break;
|
|
|
|
case MMCN_CONTEXTMENU:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_CONTEXTMENU\n"));
|
|
break;
|
|
|
|
case MMCN_CUTORMOVE:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_CUTORMOVE\n"));
|
|
break;
|
|
|
|
case MMCN_DBLCLICK:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_DBLCLICK\n"));
|
|
break;
|
|
|
|
case MMCN_DELETE:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_DELETE\n"));
|
|
break;
|
|
|
|
case MMCN_DESELECT_ALL:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_DESELECT_ALL\n"));
|
|
break;
|
|
|
|
case MMCN_EXPAND:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_EXPAND\n\tExpand: %d\n\tScope Item: %08x\n"), arg, param);
|
|
break;
|
|
|
|
case MMCN_EXPANDSYNC:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_EXPANDSYNC\n"));
|
|
break;
|
|
|
|
case MMCN_FILTERBTN_CLICK:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_FILTERBTN_CLICK\n\tColumn: %d\n"), arg);
|
|
break;
|
|
|
|
case MMCN_FILTER_CHANGE:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_FILTER_CHANGE\n\tColumn: %d\n"), param);
|
|
break;
|
|
|
|
case MMCN_HELP:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_HELP\n"));
|
|
break;
|
|
|
|
case MMCN_INITOCX:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_INITOCX\n\tIUnknown: %08x\n"), param);
|
|
break;
|
|
|
|
case MMCN_LISTPAD:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_LISTPAD\n\tConnect: %d\n"), arg);
|
|
break;
|
|
|
|
case MMCN_MENU_BTNCLICK:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_MENU_BTNCLICK\n"));
|
|
break;
|
|
|
|
case MMCN_MINIMIZED:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_MINIMIZED\n\tMinimized: %d\n"), arg);
|
|
break;
|
|
|
|
case MMCN_PASTE:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_PASTE\n\tCopy: %d\n"), NULL == param );
|
|
break;
|
|
|
|
case MMCN_PRELOAD:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_PRELOAD\n\tScope Item: %08x\n"), arg);
|
|
break;
|
|
|
|
case MMCN_PRINT:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_PRINT\n"));
|
|
break;
|
|
|
|
case MMCN_PROPERTY_CHANGE:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_PROPERTY_CHANGE\n\tScope: %d\n\tArg: %08x\n"), arg, param);
|
|
break;
|
|
|
|
case MMCN_QUERY_PASTE:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_QUERY_PASTE\n"));
|
|
break;
|
|
|
|
case MMCN_REFRESH:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_REFRESH\n"));
|
|
break;
|
|
|
|
case MMCN_REMOVE_CHILDREN:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_REMOVE_CHILDREN\n\tScope Item: %08x\n"), arg);
|
|
break;
|
|
|
|
case MMCN_RENAME:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_RENAME\n\tNew Name: '%ws'\n"), (LPOLESTR)param);
|
|
break;
|
|
|
|
case MMCN_RESTORE_VIEW:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_RESTORE_VIEW\n"));
|
|
break;
|
|
|
|
case MMCN_SELECT:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_SELECT\n\tScope: %d\n\tSelect: %08x\n"), LOWORD(arg), HIWORD(arg));
|
|
break;
|
|
|
|
case MMCN_SHOW:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_SHOW\n\tShow: %d\n\tScope Item: %08x\n"), arg, param);
|
|
break;
|
|
|
|
case MMCN_SNAPINHELP:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_SNAPINHELP\n"));
|
|
break;
|
|
|
|
case MMCN_VIEW_CHANGE:
|
|
_sntprintf( message, ARRAYLEN(message) - 1, _T("MMCN_VIEW_CHANGE\n\tData: %08x\n\tHint: %08x\n"), arg, param);
|
|
break;
|
|
}
|
|
|
|
message[ ARRAYLEN(message) - 1 ] = NULL;
|
|
|
|
if( message[0] != 0 )
|
|
OutputDebugString(message);
|
|
else
|
|
OutputDebugString(_T("unknown event\n"));
|
|
#endif
|
|
}
|