📄 spy.c
字号:
USM(TTM_ADDTOOLW ,0),
USM(TTM_DELTOOLW ,0),
USM(TTM_NEWTOOLRECTW ,0),
USM(TTM_GETTOOLINFOW ,0),
USM(TTM_SETTOOLINFOW ,0),
USM(TTM_HITTESTW ,0),
USM(TTM_GETTEXTW ,0),
USM(TTM_UPDATETIPTEXTW ,0),
USM(TTM_ENUMTOOLSW ,0),
USM(TTM_GETCURRENTTOOLW ,0),
{0,0,0} };
static const USER_MSG comboex_array[] = {
USM(CBEM_INSERTITEMA ,0),
USM(CBEM_SETIMAGELIST ,0),
USM(CBEM_GETIMAGELIST ,0),
USM(CBEM_GETITEMA ,0),
USM(CBEM_SETITEMA ,0),
USM(CBEM_GETCOMBOCONTROL ,0),
USM(CBEM_GETEDITCONTROL ,0),
USM(CBEM_SETEXSTYLE ,0),
USM(CBEM_GETEXTENDEDSTYLE ,0),
USM(CBEM_HASEDITCHANGED ,0),
USM(CBEM_INSERTITEMW ,0),
USM(CBEM_SETITEMW ,0),
USM(CBEM_GETITEMW ,0),
USM(CBEM_SETEXTENDEDSTYLE ,0),
{0,0,0} };
static const USER_MSG propsht_array[] = {
USM(PSM_SETCURSEL ,0),
USM(PSM_REMOVEPAGE ,0),
USM(PSM_ADDPAGE ,0),
USM(PSM_CHANGED ,0),
USM(PSM_RESTARTWINDOWS ,0),
USM(PSM_REBOOTSYSTEM ,0),
USM(PSM_CANCELTOCLOSE ,0),
USM(PSM_QUERYSIBLINGS ,0),
USM(PSM_UNCHANGED ,0),
USM(PSM_APPLY ,0),
USM(PSM_SETTITLEA ,0),
USM(PSM_SETWIZBUTTONS ,0),
USM(PSM_PRESSBUTTON ,0),
USM(PSM_SETCURSELID ,0),
USM(PSM_SETFINISHTEXTA ,0),
USM(PSM_GETTABCONTROL ,0),
USM(PSM_ISDIALOGMESSAGE ,0),
USM(PSM_GETCURRENTPAGEHWND ,0),
USM(PSM_SETTITLEW ,0),
USM(PSM_SETFINISHTEXTW ,0),
{0,0,0} };
const WCHAR PropSheetInfoStr[] =
{'P','r','o','p','e','r','t','y','S','h','e','e','t','I','n','f','o',0 };
static const USER_MSG updown_array[] = {
USM(UDM_SETRANGE ,0),
USM(UDM_GETRANGE ,0),
USM(UDM_SETPOS ,0),
USM(UDM_GETPOS ,0),
USM(UDM_SETBUDDY ,0),
USM(UDM_GETBUDDY ,0),
USM(UDM_SETACCEL ,0),
USM(UDM_GETACCEL ,0),
USM(UDM_SETBASE ,0),
USM(UDM_GETBASE ,0),
USM(UDM_SETRANGE32 ,0),
USM(UDM_GETRANGE32 ,0),
USM(UDM_SETPOS32 ,0),
USM(UDM_GETPOS32 ,0),
{0,0,0} };
/* generated from:
* $ for i in `grep EM_ include/richedit.h | cut -d' ' -f2 | cut -f1`; do echo -e " USM($i\t\t,0),"; done
*/
static const USER_MSG richedit_array[] = {
{"EM_SCROLLCARET", WM_USER+49 ,0},
USM(EM_CANPASTE ,0),
USM(EM_DISPLAYBAND ,0),
USM(EM_EXGETSEL ,0),
USM(EM_EXLIMITTEXT ,0),
USM(EM_EXLINEFROMCHAR ,0),
USM(EM_EXSETSEL ,0),
USM(EM_FINDTEXT ,0),
USM(EM_FORMATRANGE ,0),
USM(EM_GETCHARFORMAT ,0),
USM(EM_GETEVENTMASK ,0),
USM(EM_GETOLEINTERFACE ,0),
USM(EM_GETPARAFORMAT ,0),
USM(EM_GETSELTEXT ,0),
USM(EM_HIDESELECTION ,0),
USM(EM_PASTESPECIAL ,0),
USM(EM_REQUESTRESIZE ,0),
USM(EM_SELECTIONTYPE ,0),
USM(EM_SETBKGNDCOLOR ,0),
USM(EM_SETCHARFORMAT ,0),
USM(EM_SETEVENTMASK ,0),
USM(EM_SETOLECALLBACK ,0),
USM(EM_SETPARAFORMAT ,0),
USM(EM_SETTARGETDEVICE ,0),
USM(EM_STREAMIN ,0),
USM(EM_STREAMOUT ,0),
USM(EM_GETTEXTRANGE ,0),
USM(EM_FINDWORDBREAK ,0),
USM(EM_SETOPTIONS ,0),
USM(EM_GETOPTIONS ,0),
USM(EM_FINDTEXTEX ,0),
USM(EM_GETWORDBREAKPROCEX ,0),
USM(EM_SETWORDBREAKPROCEX ,0),
USM(EM_SETUNDOLIMIT ,0),
USM(EM_REDO ,0),
USM(EM_CANREDO ,0),
USM(EM_GETUNDONAME ,0),
USM(EM_GETREDONAME ,0),
USM(EM_STOPGROUPTYPING ,0),
USM(EM_SETTEXTMODE ,0),
USM(EM_GETTEXTMODE ,0),
USM(EM_AUTOURLDETECT ,0),
USM(EM_GETAUTOURLDETECT ,0),
USM(EM_SETPALETTE ,0),
USM(EM_GETTEXTEX ,0),
USM(EM_GETTEXTLENGTHEX ,0),
USM(EM_SHOWSCROLLBAR ,0),
USM(EM_SETTEXTEX ,0),
USM(EM_SETPUNCTUATION ,0),
USM(EM_GETPUNCTUATION ,0),
USM(EM_SETWORDWRAPMODE ,0),
USM(EM_GETWORDWRAPMODE ,0),
USM(EM_SETIMECOLOR ,0),
USM(EM_GETIMECOLOR ,0),
USM(EM_SETIMEOPTIONS ,0),
USM(EM_GETIMEOPTIONS ,0),
USM(EM_CONVPOSITION ,0),
USM(EM_SETLANGOPTIONS ,0),
USM(EM_GETLANGOPTIONS ,0),
USM(EM_GETIMECOMPMODE ,0),
USM(EM_FINDTEXTW ,0),
USM(EM_FINDTEXTEXW ,0),
USM(EM_RECONVERSION ,0),
USM(EM_SETIMEMODEBIAS ,0),
USM(EM_GETIMEMODEBIAS ,0),
USM(EM_SETBIDIOPTIONS ,0),
USM(EM_GETBIDIOPTIONS ,0),
USM(EM_SETTYPOGRAPHYOPTIONS ,0),
USM(EM_GETTYPOGRAPHYOPTIONS ,0),
USM(EM_SETEDITSTYLE ,0),
USM(EM_GETEDITSTYLE ,0),
USM(EM_OUTLINE ,0),
USM(EM_GETSCROLLPOS ,0),
USM(EM_SETSCROLLPOS ,0),
USM(EM_SETFONTSIZE ,0),
USM(EM_GETZOOM ,0),
USM(EM_SETZOOM ,0),
{0,0,0} };
#undef SZOF
#undef USM
static CONTROL_CLASS cc_array[] = {
{WC_COMBOBOXEXW, comboex_array, 0},
{WC_PROPSHEETW, propsht_array, 0},
{REBARCLASSNAMEW, rebar_array, 0},
{TOOLBARCLASSNAMEW, toolbar_array, 0},
{TOOLTIPS_CLASSW, tooltips_array, 0},
{UPDOWN_CLASSW, updown_array, 0},
{RICHEDIT_CLASS20W, richedit_array, 0},
{0, 0, 0} };
/************************************************************************/
/* WM_NOTIFY function codes display */
typedef struct
{
const char *name; /* name of notify message */
UINT value; /* notify code value */
UINT len; /* length of extra space to dump */
} SPY_NOTIFY;
#define SPNFY(a,b) { #a ,a,sizeof(b)-sizeof(NMHDR)}
/* Array MUST be in descending order by the 'value' field */
/* (since value is UNSIGNED, 0xffffffff is largest and */
/* 0xfffffffe is smaller). A binary search is used to */
/* locate the correct 'value'. */
static const SPY_NOTIFY spnfy_array[] = {
/* common 0U to 0U-99U */
SPNFY(NM_OUTOFMEMORY, NMHDR),
SPNFY(NM_CLICK, NMHDR),
SPNFY(NM_DBLCLK, NMHDR),
SPNFY(NM_RETURN, NMHDR),
SPNFY(NM_RCLICK, NMHDR),
SPNFY(NM_RDBLCLK, NMHDR),
SPNFY(NM_SETFOCUS, NMHDR),
SPNFY(NM_KILLFOCUS, NMHDR),
SPNFY(NM_CUSTOMDRAW, NMCUSTOMDRAW),
SPNFY(NM_HOVER, NMHDR),
SPNFY(NM_NCHITTEST, NMMOUSE),
SPNFY(NM_KEYDOWN, NMKEY),
SPNFY(NM_RELEASEDCAPTURE, NMHDR),
SPNFY(NM_SETCURSOR, NMMOUSE),
SPNFY(NM_CHAR, NMCHAR),
SPNFY(NM_TOOLTIPSCREATED, NMTOOLTIPSCREATED),
/* Listview 0U-100U to 0U-199U */
SPNFY(LVN_ITEMCHANGING, NMLISTVIEW),
SPNFY(LVN_ITEMCHANGED, NMLISTVIEW),
SPNFY(LVN_INSERTITEM, NMLISTVIEW),
SPNFY(LVN_DELETEITEM, NMLISTVIEW),
SPNFY(LVN_DELETEALLITEMS, NMLISTVIEW),
SPNFY(LVN_BEGINLABELEDITA, NMLVDISPINFOA),
SPNFY(LVN_ENDLABELEDITA, NMLVDISPINFOA),
SPNFY(LVN_COLUMNCLICK, NMLISTVIEW),
SPNFY(LVN_BEGINDRAG, NMLISTVIEW),
SPNFY(LVN_BEGINRDRAG, NMLISTVIEW),
SPNFY(LVN_ODCACHEHINT, NMLVCACHEHINT),
SPNFY(LVN_ITEMACTIVATE, NMITEMACTIVATE),
SPNFY(LVN_ODSTATECHANGED, NMLVODSTATECHANGE),
SPNFY(LVN_HOTTRACK, NMLISTVIEW),
SPNFY(LVN_GETDISPINFOA, NMLVDISPINFOA),
SPNFY(LVN_SETDISPINFOA, NMLVDISPINFOA),
SPNFY(LVN_ODFINDITEMA, NMLVFINDITEMA),
SPNFY(LVN_KEYDOWN, NMLVKEYDOWN),
SPNFY(LVN_MARQUEEBEGIN, NMLISTVIEW),
SPNFY(LVN_GETINFOTIPA, NMLVGETINFOTIPA),
SPNFY(LVN_GETINFOTIPW, NMLVGETINFOTIPW),
SPNFY(LVN_BEGINLABELEDITW, NMLVDISPINFOW),
SPNFY(LVN_ENDLABELEDITW, NMLVDISPINFOW),
SPNFY(LVN_GETDISPINFOW, NMLVDISPINFOW),
SPNFY(LVN_SETDISPINFOW, NMLVDISPINFOW),
SPNFY(LVN_ODFINDITEMW, NMLVFINDITEMW),
/* PropertySheet 0U-200U to 0U-299U */
SPNFY(PSN_SETACTIVE, PSHNOTIFY),
SPNFY(PSN_KILLACTIVE, PSHNOTIFY),
SPNFY(PSN_APPLY, PSHNOTIFY),
SPNFY(PSN_RESET, PSHNOTIFY),
SPNFY(PSN_HELP, PSHNOTIFY),
SPNFY(PSN_WIZBACK, PSHNOTIFY),
SPNFY(PSN_WIZNEXT, PSHNOTIFY),
SPNFY(PSN_WIZFINISH, PSHNOTIFY),
SPNFY(PSN_QUERYCANCEL, PSHNOTIFY),
SPNFY(PSN_GETOBJECT, NMOBJECTNOTIFY),
SPNFY(PSN_TRANSLATEACCELERATOR, PSHNOTIFY),
SPNFY(PSN_QUERYINITIALFOCUS, PSHNOTIFY),
/* Header 0U-300U to 0U-399U */
SPNFY(HDN_ITEMCHANGINGA, NMHEADERA),
SPNFY(HDN_ITEMCHANGEDA, NMHEADERA),
SPNFY(HDN_ITEMCLICKA, NMHEADERA),
SPNFY(HDN_ITEMDBLCLICKA, NMHEADERA),
SPNFY(HDN_DIVIDERDBLCLICKA, NMHEADERA),
SPNFY(HDN_BEGINTRACKA, NMHEADERA),
SPNFY(HDN_ENDTRACKA, NMHEADERA),
SPNFY(HDN_TRACKA, NMHEADERA),
SPNFY(HDN_GETDISPINFOA, NMHEADERA),
SPNFY(HDN_BEGINDRAG, NMHDR),
SPNFY(HDN_ENDDRAG, NMHDR),
SPNFY(HDN_ITEMCHANGINGW, NMHDR),
SPNFY(HDN_ITEMCHANGEDW, NMHDR),
SPNFY(HDN_ITEMCLICKW, NMHDR),
SPNFY(HDN_ITEMDBLCLICKW, NMHDR),
SPNFY(HDN_DIVIDERDBLCLICKW, NMHDR),
SPNFY(HDN_BEGINTRACKW, NMHDR),
SPNFY(HDN_ENDTRACKW, NMHDR),
SPNFY(HDN_TRACKW, NMHDR),
SPNFY(HDN_GETDISPINFOW, NMHDR),
/* Treeview 0U-400U to 0U-499U */
SPNFY(TVN_SELCHANGINGA, NMTREEVIEWA),
SPNFY(TVN_SELCHANGEDA, NMTREEVIEWA),
SPNFY(TVN_GETDISPINFOA, NMTVDISPINFOA),
SPNFY(TVN_SETDISPINFOA, NMTVDISPINFOA),
SPNFY(TVN_ITEMEXPANDINGA, NMTREEVIEWA),
SPNFY(TVN_ITEMEXPANDEDA, NMTREEVIEWA),
SPNFY(TVN_BEGINDRAGA, NMTREEVIEWA),
SPNFY(TVN_BEGINRDRAGA, NMTREEVIEWA),
SPNFY(TVN_DELETEITEMA, NMTREEVIEWA),
SPNFY(TVN_BEGINLABELEDITA, NMTVDISPINFOA),
SPNFY(TVN_ENDLABELEDITA, NMTVDISPINFOA),
SPNFY(TVN_KEYDOWN, NMTVKEYDOWN),
SPNFY(TVN_SELCHANGINGW, NMTREEVIEWW),
SPNFY(TVN_SELCHANGEDW, NMTREEVIEWW),
SPNFY(TVN_GETDISPINFOW, NMTVDISPINFOW),
SPNFY(TVN_SETDISPINFOW, NMTVDISPINFOW),
SPNFY(TVN_ITEMEXPANDINGW, NMTREEVIEWW),
SPNFY(TVN_ITEMEXPANDEDW, NMTREEVIEWW),
SPNFY(TVN_BEGINDRAGW, NMTREEVIEWW),
SPNFY(TVN_BEGINRDRAGW, NMTREEVIEWW),
SPNFY(TVN_DELETEITEMW, NMTREEVIEWW),
SPNFY(TVN_BEGINLABELEDITW, NMTVDISPINFOW),
SPNFY(TVN_ENDLABELEDITW, NMTVDISPINFOW),
/* Tooltips 0U-520U to 0U-549U */
SPNFY(TTN_GETDISPINFOA, NMHDR),
SPNFY(TTN_SHOW, NMHDR),
SPNFY(TTN_POP, NMHDR),
SPNFY(TTN_GETDISPINFOW, NMHDR),
/* Tab 0U-550U to 0U-580U */
SPNFY(TCN_KEYDOWN, NMHDR),
SPNFY(TCN_SELCHANGE, NMHDR),
SPNFY(TCN_SELCHANGING, NMHDR),
SPNFY(TCN_GETOBJECT, NMHDR),
/* Common Dialog 0U-601U to 0U-699U */
SPNFY(CDN_INITDONE, OFNOTIFYA),
SPNFY(CDN_SELCHANGE, OFNOTIFYA),
SPNFY(CDN_FOLDERCHANGE, OFNOTIFYA),
SPNFY(CDN_SHAREVIOLATION, OFNOTIFYA),
SPNFY(CDN_HELP, OFNOTIFYA),
SPNFY(CDN_FILEOK, OFNOTIFYA),
SPNFY(CDN_TYPECHANGE, OFNOTIFYA),
/* Toolbar 0U-700U to 0U-720U */
SPNFY(TBN_GETBUTTONINFOA, NMTOOLBARA),
SPNFY(TBN_BEGINDRAG, NMTOOLBARA),
SPNFY(TBN_ENDDRAG, NMTOOLBARA),
SPNFY(TBN_BEGINADJUST, NMHDR),
SPNFY(TBN_ENDADJUST, NMHDR),
SPNFY(TBN_RESET, NMHDR),
SPNFY(TBN_QUERYINSERT, NMTOOLBARA),
SPNFY(TBN_QUERYDELETE, NMTOOLBARA),
SPNFY(TBN_TOOLBARCHANGE, NMHDR),
SPNFY(TBN_CUSTHELP, NMHDR),
SPNFY(TBN_DROPDOWN, NMTOOLBARA),
SPNFY(TBN_GETOBJECT, NMOBJECTNOTIFY),
SPNFY(TBN_HOTITEMCHANGE, NMTBHOTITEM),
SPNFY(TBN_DRAGOUT, NMTOOLBARA),
SPNFY(TBN_DELETINGBUTTON, NMTOOLBARA),
SPNFY(TBN_GETDISPINFOA, NMTBDISPINFOA),
SPNFY(TBN_GETDISPINFOW, NMTBDISPINFOW),
SPNFY(TBN_GETINFOTIPA, NMTBGETINFOTIPA),
SPNFY(TBN_GETINFOTIPW, NMTBGETINFOTIPW),
SPNFY(TBN_GETBUTTONINFOW, NMTOOLBARW),
/* Up/Down 0U-721U to 0U-740U */
SPNFY(UDN_DELTAPOS, NM_UPDOWN),
/* Month Calendar 0U-750U to 0U-759U */
/* ******************* WARNING ***************************** */
/* The following appear backwards but needs to be this way. */
/* The reason is that MS (and us) define the MCNs as */
/* MCN_FIRST + n */
/* instead of the way ALL other notifications are */
/* TBN_FIRST - n */
/* The only place that this is important is in this list */
/* */
/* Also since the same error was made with the DTN_ items, */
/* they overlay the MCN_ and need to be inserted in the */
/* other section of the table so that it is in order for */
/* the binary search. */
/* */
/* Thank you MS for your obvious quality control!! */
/* ******************* WARNING ***************************** */
/* Date/Time 0U-760U to 0U-799U */
/* SPNFY(MCN_SELECT, NMHDR), */
/* SPNFY(MCN_GETDAYSTATE, NMHDR), */
/* SPNFY(MCN_SELCHANGE, NMHDR), */
/* ******************* WARNING ***************************** */
/* The following appear backwards but needs to be this way. */
/* The reason is that MS (and us) define the MCNs as */
/* DTN_FIRST + n */
/* instead of the way ALL other notifications are */
/* TBN_FIRST - n */
/* The only place that this is important is in this list */
/* ******************* WARNING ***************************** */
SPNFY(DTN_FORMATQUERYW, NMHDR),
SPNFY(DTN_FORMATW, NMHDR),
SPNFY(DTN_WMKEYDOWNW, NMHDR),
SPNFY(DTN_USERSTRINGW, NMHDR),
SPNFY(MCN_SELECT, NMHDR),
SPNFY(MCN_GETDAYSTATE, NMHDR),
SPNFY(MCN_SELCHANGE, NMHDR),
SPNFY(DTN_CLOSEUP, NMHDR),
SPNFY(DTN_DROPDOWN, NMHDR),
SPNFY(DTN_FORMATQUERYA, NMHDR),
SPNFY(DTN_FORMATA, NMHDR),
SPNFY(DTN_WMKEYDOWNA, NMHDR),
SPNFY(DTN_USERSTRINGA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -