📄 spy.c
字号:
/*
* Message spying routines
*
* Copyright 1994, Bob Amstadt
* 1995, Alex Korobka
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <user32.h>
#include <commctrl.h>
#include <richedit.h>
#include <prsht.h>
//#define YDEBUG
#include <wine/debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(message);
#define SPY_MAX_MSGNUM WM_USER
#define SPY_INDENT_UNIT 4 /* 4 spaces */
#define DEBUG_SPY 0
static const char * const MessageTypeNames[SPY_MAX_MSGNUM + 1] =
{
"WM_NULL", /* 0x00 */
"WM_CREATE",
"WM_DESTROY",
"WM_MOVE",
"wm_sizewait",
"WM_SIZE",
"WM_ACTIVATE",
"WM_SETFOCUS",
"WM_KILLFOCUS",
"WM_SETVISIBLE",
"WM_ENABLE",
"WM_SETREDRAW",
"WM_SETTEXT",
"WM_GETTEXT",
"WM_GETTEXTLENGTH",
"WM_PAINT",
"WM_CLOSE", /* 0x10 */
"WM_QUERYENDSESSION",
"WM_QUIT",
"WM_QUERYOPEN",
"WM_ERASEBKGND",
"WM_SYSCOLORCHANGE",
"WM_ENDSESSION",
"wm_systemerror",
"WM_SHOWWINDOW",
"WM_CTLCOLOR",
"WM_WININICHANGE",
"WM_DEVMODECHANGE",
"WM_ACTIVATEAPP",
"WM_FONTCHANGE",
"WM_TIMECHANGE",
"WM_CANCELMODE",
"WM_SETCURSOR", /* 0x20 */
"WM_MOUSEACTIVATE",
"WM_CHILDACTIVATE",
"WM_QUEUESYNC",
"WM_GETMINMAXINFO",
"wm_unused3",
"wm_painticon",
"WM_ICONERASEBKGND",
"WM_NEXTDLGCTL",
"wm_alttabactive",
"WM_SPOOLERSTATUS",
"WM_DRAWITEM",
"WM_MEASUREITEM",
"WM_DELETEITEM",
"WM_VKEYTOITEM",
"WM_CHARTOITEM",
"WM_SETFONT", /* 0x30 */
"WM_GETFONT",
"WM_SETHOTKEY",
"WM_GETHOTKEY",
"wm_filesyschange",
"wm_isactiveicon",
"wm_queryparkicon",
"WM_QUERYDRAGICON",
"wm_querysavestate",
"WM_COMPAREITEM",
"wm_testing",
NULL,
NULL,
"WM_GETOBJECT", /* 0x3d */
"wm_activateshellwindow",
NULL,
NULL, /* 0x40 */
"wm_compacting", NULL, NULL,
"WM_COMMNOTIFY", NULL,
"WM_WINDOWPOSCHANGING", /* 0x0046 */
"WM_WINDOWPOSCHANGED", /* 0x0047 */
"WM_POWER", NULL,
"WM_COPYDATA",
"WM_CANCELJOURNAL", NULL, NULL,
"WM_NOTIFY", NULL,
/* 0x0050 */
"WM_INPUTLANGCHANGEREQUEST",
"WM_INPUTLANGCHANGE",
"WM_TCARD",
"WM_HELP",
"WM_USERCHANGED",
"WM_NOTIFYFORMAT", NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x0060 */
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x0070 */
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL,
"WM_CONTEXTMENU",
"WM_STYLECHANGING",
"WM_STYLECHANGED",
"WM_DISPLAYCHANGE",
"WM_GETICON",
"WM_SETICON", /* 0x0080 */
"WM_NCCREATE", /* 0x0081 */
"WM_NCDESTROY", /* 0x0082 */
"WM_NCCALCSIZE", /* 0x0083 */
"WM_NCHITTEST", /* 0x0084 */
"WM_NCPAINT", /* 0x0085 */
"WM_NCACTIVATE", /* 0x0086 */
"WM_GETDLGCODE", /* 0x0087 */
"WM_SYNCPAINT",
"WM_SYNCTASK", NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x0090 */
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x00A0 */
"WM_NCMOUSEMOVE", /* 0x00a0 */
"WM_NCLBUTTONDOWN", /* 0x00a1 */
"WM_NCLBUTTONUP", /* 0x00a2 */
"WM_NCLBUTTONDBLCLK", /* 0x00a3 */
"WM_NCRBUTTONDOWN", /* 0x00a4 */
"WM_NCRBUTTONUP", /* 0x00a5 */
"WM_NCRBUTTONDBLCLK", /* 0x00a6 */
"WM_NCMBUTTONDOWN", /* 0x00a7 */
"WM_NCMBUTTONUP", /* 0x00a8 */
"WM_NCMBUTTONDBLCLK", /* 0x00a9 */
NULL, /* 0x00aa */
"WM_NCXBUTTONDOWN", /* 0x00ab */
"WM_NCXBUTTONUP", /* 0x00ac */
"WM_NCXBUTTONDBLCLK", /* 0x00ad */
NULL, /* 0x00ae */
NULL, /* 0x00af */
/* 0x00B0 - Win32 Edit controls */
"EM_GETSEL", /* 0x00b0 */
"EM_SETSEL", /* 0x00b1 */
"EM_GETRECT", /* 0x00b2 */
"EM_SETRECT", /* 0x00b3 */
"EM_SETRECTNP", /* 0x00b4 */
"EM_SCROLL", /* 0x00b5 */
"EM_LINESCROLL", /* 0x00b6 */
"EM_SCROLLCARET", /* 0x00b7 */
"EM_GETMODIFY", /* 0x00b8 */
"EM_SETMODIFY", /* 0x00b9 */
"EM_GETLINECOUNT", /* 0x00ba */
"EM_LINEINDEX", /* 0x00bb */
"EM_SETHANDLE", /* 0x00bc */
"EM_GETHANDLE", /* 0x00bd */
"EM_GETTHUMB", /* 0x00be */
NULL, /* 0x00bf */
NULL, /* 0x00c0 */
"EM_LINELENGTH", /* 0x00c1 */
"EM_REPLACESEL", /* 0x00c2 */
NULL, /* 0x00c3 */
"EM_GETLINE", /* 0x00c4 */
"EM_LIMITTEXT", /* 0x00c5 */
"EM_CANUNDO", /* 0x00c6 */
"EM_UNDO", /* 0x00c7 */
"EM_FMTLINES", /* 0x00c8 */
"EM_LINEFROMCHAR", /* 0x00c9 */
NULL, /* 0x00ca */
"EM_SETTABSTOPS", /* 0x00cb */
"EM_SETPASSWORDCHAR", /* 0x00cc */
"EM_EMPTYUNDOBUFFER", /* 0x00cd */
"EM_GETFIRSTVISIBLELINE", /* 0x00ce */
"EM_SETREADONLY", /* 0x00cf */
"EM_SETWORDBREAKPROC", /* 0x00d0 */
"EM_GETWORDBREAKPROC", /* 0x00d1 */
"EM_GETPASSWORDCHAR", /* 0x00d2 */
"EM_SETMARGINS", /* 0x00d3 */
"EM_GETMARGINS", /* 0x00d4 */
"EM_GETLIMITTEXT", /* 0x00d5 */
"EM_POSFROMCHAR", /* 0x00d6 */
"EM_CHARFROMPOS", /* 0x00d7 */
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x00E0 - Win32 Scrollbars */
"SBM_SETPOS", /* 0x00e0 */
"SBM_GETPOS", /* 0x00e1 */
"SBM_SETRANGE", /* 0x00e2 */
"SBM_GETRANGE", /* 0x00e3 */
"SBM_ENABLE_ARROWS", /* 0x00e4 */
NULL,
"SBM_SETRANGEREDRAW", /* 0x00e6 */
NULL, NULL,
"SBM_SETSCROLLINFO", /* 0x00e9 */
"SBM_GETSCROLLINFO", /* 0x00ea */
NULL, NULL, NULL, NULL, NULL,
/* 0x00F0 - Win32 Buttons */
"BM_GETCHECK", /* 0x00f0 */
"BM_SETCHECK", /* 0x00f1 */
"BM_GETSTATE", /* 0x00f2 */
"BM_SETSTATE", /* 0x00f3 */
"BM_SETSTYLE", /* 0x00f4 */
"BM_CLICK", /* 0x00f5 */
"BM_GETIMAGE", /* 0x00f6 */
"BM_SETIMAGE", /* 0x00f7 */
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
"WM_KEYDOWN", /* 0x0100 */
"WM_KEYUP", /* 0x0101 */
"WM_CHAR", /* 0x0102 */
"WM_DEADCHAR", /* 0x0103 */
"WM_SYSKEYDOWN", /* 0x0104 */
"WM_SYSKEYUP", /* 0x0105 */
"WM_SYSCHAR", /* 0x0106 */
"WM_SYSDEADCHAR", /* 0x0107 */
"WM_KEYLAST", /* 0x0108 */
NULL,
"WM_CONVERTREQUEST",
"WM_CONVERTRESULT",
"WM_INTERIM",
"WM_IME_STARTCOMPOSITION", /* 0x010d */
"WM_IME_ENDCOMPOSITION", /* 0x010e */
"WM_IME_COMPOSITION", /* 0x010f */
"WM_INITDIALOG", /* 0x0110 */
"WM_COMMAND", /* 0x0111 */
"WM_SYSCOMMAND", /* 0x0112 */
"WM_TIMER", /* 0x0113 */
"WM_HSCROLL", /* 0x0114 */
"WM_VSCROLL", /* 0x0115 */
"WM_INITMENU", /* 0x0116 */
"WM_INITMENUPOPUP", /* 0x0117 */
"WM_SYSTIMER", /* 0x0118 */
NULL, NULL, NULL, NULL, NULL, NULL,
"WM_MENUSELECT", /* 0x011f */
"WM_MENUCHAR", /* 0x0120 */
"WM_ENTERIDLE", /* 0x0121 */
"WM_MENURBUTTONUP", /* 0x0122 */
"WM_MENUDRAG", /* 0x0123 */
"WM_MENUGETOBJECT", /* 0x0124 */
"WM_UNINITMENUPOPUP", /* 0x0125 */
"WM_MENUCOMMAND", /* 0x0126 */
"WM_CHANGEUISTATE", /* 0x0127 */
"WM_UPDATEUISTATE", /* 0x0128 */
"WM_QUERYUISTATE", /* 0x0129 */
NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x0130 */
NULL,
"WM_LBTRACKPOINT", /* 0x0131 */
"WM_CTLCOLORMSGBOX", /* 0x0132 */
"WM_CTLCOLOREDIT", /* 0x0133 */
"WM_CTLCOLORLISTBOX", /* 0x0134 */
"WM_CTLCOLORBTN", /* 0x0135 */
"WM_CTLCOLORDLG", /* 0x0136 */
"WM_CTLCOLORSCROLLBAR", /* 0x0137 */
"WM_CTLCOLORSTATIC", /* 0x0138 */
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x0140 - Win32 Comboboxes */
"CB_GETEDITSEL", /* 0x0140 */
"CB_LIMITTEXT", /* 0x0141 */
"CB_SETEDITSEL", /* 0x0142 */
"CB_ADDSTRING", /* 0x0143 */
"CB_DELETESTRING", /* 0x0144 */
"CB_DIR", /* 0x0145 */
"CB_GETCOUNT", /* 0x0146 */
"CB_GETCURSEL", /* 0x0147 */
"CB_GETLBTEXT", /* 0x0148 */
"CB_GETLBTEXTLEN", /* 0x0149 */
"CB_INSERTSTRING", /* 0x014a */
"CB_RESETCONTENT", /* 0x014b */
"CB_FINDSTRING", /* 0x014c */
"CB_SELECTSTRING", /* 0x014d */
"CB_SETCURSEL", /* 0x014e */
"CB_SHOWDROPDOWN", /* 0x014f */
"CB_GETITEMDATA", /* 0x0150 */
"CB_SETITEMDATA", /* 0x0151 */
"CB_GETDROPPEDCONTROLRECT", /* 0x0152 */
"CB_SETITEMHEIGHT", /* 0x0153 */
"CB_GETITEMHEIGHT", /* 0x0154 */
"CB_SETEXTENDEDUI", /* 0x0155 */
"CB_GETEXTENDEDUI", /* 0x0156 */
"CB_GETDROPPEDSTATE", /* 0x0157 */
"CB_FINDSTRINGEXACT", /* 0x0158 */
"CB_SETLOCALE", /* 0x0159 */
"CB_GETLOCALE", /* 0x015a */
"CB_GETTOPINDEX", /* 0x015b */
"CB_SETTOPINDEX", /* 0x015c */
"CB_GETHORIZONTALEXTENT", /* 0x015d */
"CB_SETHORIZONTALEXTENT", /* 0x015e */
"CB_GETDROPPEDWIDTH", /* 0x015f */
"CB_SETDROPPEDWIDTH", /* 0x0160 */
"CB_INITSTORAGE", /* 0x0161 */
NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x0170 - Win32 Static controls */
"STM_SETICON", /* 0x0170 */
"STM_GETICON", /* 0x0171 */
"STM_SETIMAGE", /* 0x0172 */
"STM_GETIMAGE", /* 0x0173 */
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x0180 - Win32 Listboxes */
"LB_ADDSTRING", /* 0x0180 */
"LB_INSERTSTRING", /* 0x0181 */
"LB_DELETESTRING", /* 0x0182 */
"LB_SELITEMRANGEEX", /* 0x0183 */
"LB_RESETCONTENT", /* 0x0184 */
"LB_SETSEL", /* 0x0185 */
"LB_SETCURSEL", /* 0x0186 */
"LB_GETSEL", /* 0x0187 */
"LB_GETCURSEL", /* 0x0188 */
"LB_GETTEXT", /* 0x0189 */
"LB_GETTEXTLEN", /* 0x018a */
"LB_GETCOUNT", /* 0x018b */
"LB_SELECTSTRING", /* 0x018c */
"LB_DIR", /* 0x018d */
"LB_GETTOPINDEX", /* 0x018e */
"LB_FINDSTRING", /* 0x018f */
"LB_GETSELCOUNT", /* 0x0190 */
"LB_GETSELITEMS", /* 0x0191 */
"LB_SETTABSTOPS", /* 0x0192 */
"LB_GETHORIZONTALEXTENT", /* 0x0193 */
"LB_SETHORIZONTALEXTENT", /* 0x0194 */
"LB_SETCOLUMNWIDTH", /* 0x0195 */
"LB_ADDFILE", /* 0x0196 */
"LB_SETTOPINDEX", /* 0x0197 */
"LB_GETITEMRECT", /* 0x0198 */
"LB_GETITEMDATA", /* 0x0199 */
"LB_SETITEMDATA", /* 0x019a */
"LB_SELITEMRANGE", /* 0x019b */
"LB_SETANCHORINDEX", /* 0x019c */
"LB_GETANCHORINDEX", /* 0x019d */
"LB_SETCARETINDEX", /* 0x019e */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -