Release 940405
[wine/multimedia.git] / misc / spy.c
blobbfc0042d89d69593090f2eca052c48ad5f8b835d
1 /* SPY.C
3 * Copyright 1994, Bob Amstadt
4 */
6 #include <stdlib.h>
7 #include <stdio.h>
8 #include <X11/Xlib.h>
9 #include <X11/Xresource.h>
10 #include <string.h>
11 #include "wineopts.h"
12 #include "windows.h"
13 #include "wine.h"
14 #include "options.h"
16 #ifndef NOSPY
18 #define SPY_MAX_MSGNUM 0x0232
20 const char *MessageTypeNames[SPY_MAX_MSGNUM + 1] =
22 "WM_NULL", /* 0x00 */
23 "WM_CREATE",
24 "WM_DESTROY",
25 "WM_MOVE",
26 "WM_UNUSED0",
27 "WM_SIZE",
28 "WM_ACTIVATE",
29 "WM_SETFOCUS",
30 "WM_KILLFOCUS",
31 "WM_UNUSED1",
32 "WM_ENABLE",
33 "WM_SETREDRAW",
34 "WM_SETTEXT",
35 "WM_GETTEXT",
36 "WM_GETTEXTLENGTH",
37 "WM_PAINT",
38 "WM_CLOSE", /* 0x10 */
39 "WM_QUERYENDSESSION",
40 "WM_QUIT",
41 "WM_QUERYOPEN",
42 "WM_ERASEBKGND",
43 "WM_SYSCOLORCHANGE",
44 "WM_ENDSESSION",
45 "WM_UNUSED2",
46 "WM_SHOWWINDOW",
47 "WM_CTLCOLOR",
48 "WM_WININICHANGE",
49 "WM_DEVMODECHANGE",
50 "WM_ACTIVATEAPP",
51 "WM_FONTCHANGE",
52 "WM_TIMECHANGE",
53 "WM_CANCELMODE",
54 "WM_SETCURSOR", /* 0x20 */
55 "WM_MOUSEACTIVATE",
56 "WM_CHILDACTIVATE",
57 "WM_QUEUESYNC",
58 "WM_GETMINMAXINFO",
59 "WM_UNUSED3",
60 "WM_PAINTICON",
61 "WM_ICONERASEBKGND",
62 "WM_NEXTDLGCTL",
63 "WM_UNUSED4",
64 "WM_SPOOLERSTATUS",
65 "WM_DRAWITEM",
66 "WM_MEASUREITEM",
67 "WM_DELETEITEM",
68 "WM_VKEYTOITEM",
69 "WM_CHARTOITEM",
70 "WM_SETFONT", /* 0x30 */
71 "WM_GETFONT", NULL, NULL, NULL, NULL, NULL, NULL,
72 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
74 /* 0x40 */
75 NULL, NULL, NULL, NULL, NULL, NULL,
76 "WM_WINDOWPOSCHANGING", /* 0x0046 */
77 "WM_WINDOWPOSCHANGED", /* 0x0047 */
78 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
80 /* 0x0050 */
81 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
82 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
84 /* 0x0060 */
85 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
86 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
88 /* 0x0070 */
89 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
90 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
92 NULL, /* 0x0080 */
93 "WM_NCCREATE", /* 0x0081 */
94 "WM_NCDESTROY", /* 0x0082 */
95 "WM_NCCALCSIZE", /* 0x0083 */
96 "WM_NCHITTEST", /* 0x0084 */
97 "WM_NCPAINT", /* 0x0085 */
98 "WM_NCACTIVATE", /* 0x0086 */
99 "WM_GETDLGCODE", /* 0x0087 */
100 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
102 /* 0x0090 */
103 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
104 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
106 /* 0x00A0 */
107 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
108 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
110 /* 0x00B0 */
111 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
112 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
114 /* 0x00C0 */
115 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
116 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
118 /* 0x00D0 */
119 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
120 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
122 /* 0x00E0 */
123 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
124 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
126 /* 0x00F0 */
127 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
128 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
130 "WM_KEYDOWN", /* 0x0100 */
131 "WM_KEYUP", /* 0x0101 */
132 "WM_CHAR", /* 0x0102 */
133 "WM_DEADCHAR", /* 0x0103 */
134 "WM_SYSKEYDOWN", /* 0x0104 */
135 "WM_SYSKEYUP", /* 0x0105 */
136 "WM_SYSCHAR", /* 0x0106 */
137 "WM_SYSDEADCHAR", /* 0x0107 */
138 "WM_KEYLAST", /* 0x0108 */
139 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
141 "WM_INITDIALOG", /* 0x0110 */
142 "WM_COMMAND", /* 0x0111 */
143 "WM_SYSCOMMAND", /* 0x0112 */
144 "WM_TIMER", /* 0x0113 */
145 "WM_HSCROLL", /* 0x0114 */
146 "WM_VSCROLL", /* 0x0115 */
147 NULL, NULL,
148 "WM_SYSTIMER", /* 0x0118 */
149 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
151 /* 0x0120 */
152 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
153 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
155 /* 0x0130 */
156 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
157 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
159 /* 0x0140 */
160 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
161 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
163 /* 0x0150 */
164 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
165 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
167 /* 0x0160 */
168 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
169 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
171 /* 0x0170 */
172 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
173 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
175 /* 0x0180 */
176 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
177 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
179 /* 0x0190 */
180 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
181 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
183 /* 0x01A0 */
184 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
185 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
187 /* 0x01B0 */
188 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
189 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
191 /* 0x01C0 */
192 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
193 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
195 /* 0x01D0 */
196 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
197 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
199 /* 0x01E0 */
200 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
201 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
203 /* 0x01F0 */
204 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
205 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
207 "WM_MOUSEMOVE", /* 0x0200 */
208 "WM_LBUTTONDOWN", /* 0x0201 */
209 "WM_LBUTTONUP", /* 0x0202 */
210 "WM_LBUTTONDBLCLK", /* 0x0203 */
211 "WM_RBUTTONDOWN", /* 0x0204 */
212 "WM_RBUTTONUP", /* 0x0205 */
213 "WM_RBUTTONDBLCLK", /* 0x0206 */
214 "WM_MBUTTONDOWN", /* 0x0207 */
215 "WM_MBUTTONUP", /* 0x0208 */
216 "WM_MBUTTONDBLCLK", /* 0x0209 */
217 NULL, NULL, NULL, NULL, NULL, NULL,
219 "WM_PARENTNOTIFY", /* 0x0210 */
221 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
222 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
224 /* 0x0220 */
225 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
226 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
229 NULL, /* 0x0230 */
230 "WM_ENTERSIZEMOVE", /* 0x0231 */
231 "WM_EXITSIZEMOVE" /* 0x0232 */
234 char SpyFilters[256];
235 char SpyIncludes[256];
237 #endif /* NOSPY */
239 /**********************************************************************
240 * SpyMessage
242 void SpyMessage(HWND hwnd, WORD msg, WORD wParam, LONG lParam)
244 #ifndef NOSPY
245 char msg_name[80];
247 if (SpyFp == NULL)
248 return;
250 if (msg > SPY_MAX_MSGNUM || MessageTypeNames[msg] == NULL)
251 msg_name[0] = '\0';
252 else
253 strcpy(msg_name, MessageTypeNames[msg]);
255 strcat(msg_name, ";");
257 if ((strlen(SpyIncludes) == 0 || strstr(SpyIncludes, msg_name) != NULL) &&
258 strstr(SpyFilters, msg_name) == NULL)
260 msg_name[strlen(msg_name) - 1] = '\0';
261 fprintf(SpyFp, "%04.4x %20.20s %04.4x %04.4x %08.8x\n",
262 hwnd, msg_name, msg, wParam, lParam);
264 #endif
267 /**********************************************************************
268 * SpyInit
270 void SpyInit(void)
272 char filename[100];
274 if (SpyFp != NULL)
275 return;
277 if (Options.spyFilename == NULL)
279 GetPrivateProfileString("spy", "file", "", filename, sizeof(filename),
280 WINE_INI);
282 else
283 strncpy(filename, Options.spyFilename, 100);
285 if (strcasecmp(filename, "CON") == 0)
286 SpyFp = stdout;
287 else if (strlen(filename))
288 SpyFp = fopen(filename, "a");
289 else
291 SpyFp = NULL;
292 return;
295 GetPrivateProfileString("spy", "exclude", "", SpyFilters,
296 sizeof(SpyFilters), WINE_INI);
297 GetPrivateProfileString("spy", "include", "", SpyIncludes,
298 sizeof(SpyIncludes), WINE_INI);