Release 950727
[wine/multimedia.git] / misc / spy.c
blob835f8c64023df9e437d320a0aaae803fe8736f2e
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 "windows.h"
12 #include "wine.h"
13 #include "options.h"
14 #include "stddebug.h"
15 #include "debug.h"
17 #define SPY_MAX_MSGNUM 0x03e8
19 const char *MessageTypeNames[SPY_MAX_MSGNUM + 1] =
21 "WM_NULL", /* 0x00 */
22 "WM_CREATE",
23 "WM_DESTROY",
24 "WM_MOVE",
25 "WM_UNUSED0",
26 "WM_SIZE",
27 "WM_ACTIVATE",
28 "WM_SETFOCUS",
29 "WM_KILLFOCUS",
30 "WM_UNUSED1",
31 "WM_ENABLE",
32 "WM_SETREDRAW",
33 "WM_SETTEXT",
34 "WM_GETTEXT",
35 "WM_GETTEXTLENGTH",
36 "WM_PAINT",
37 "WM_CLOSE", /* 0x10 */
38 "WM_QUERYENDSESSION",
39 "WM_QUIT",
40 "WM_QUERYOPEN",
41 "WM_ERASEBKGND",
42 "WM_SYSCOLORCHANGE",
43 "WM_ENDSESSION",
44 "WM_UNUSED2",
45 "WM_SHOWWINDOW",
46 "WM_CTLCOLOR",
47 "WM_WININICHANGE",
48 "WM_DEVMODECHANGE",
49 "WM_ACTIVATEAPP",
50 "WM_FONTCHANGE",
51 "WM_TIMECHANGE",
52 "WM_CANCELMODE",
53 "WM_SETCURSOR", /* 0x20 */
54 "WM_MOUSEACTIVATE",
55 "WM_CHILDACTIVATE",
56 "WM_QUEUESYNC",
57 "WM_GETMINMAXINFO",
58 "WM_UNUSED3",
59 "WM_PAINTICON",
60 "WM_ICONERASEBKGND",
61 "WM_NEXTDLGCTL",
62 "WM_UNUSED4",
63 "WM_SPOOLERSTATUS",
64 "WM_DRAWITEM",
65 "WM_MEASUREITEM",
66 "WM_DELETEITEM",
67 "WM_VKEYTOITEM",
68 "WM_CHARTOITEM",
69 "WM_SETFONT", /* 0x30 */
70 "WM_GETFONT", NULL, NULL, NULL, NULL, NULL, NULL,
71 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
73 /* 0x40 */
74 NULL, NULL, NULL, NULL, NULL, NULL,
75 "WM_WINDOWPOSCHANGING", /* 0x0046 */
76 "WM_WINDOWPOSCHANGED", /* 0x0047 */
77 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
79 /* 0x0050 */
80 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
81 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
83 /* 0x0060 */
84 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
85 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
87 /* 0x0070 */
88 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
89 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
91 NULL, /* 0x0080 */
92 "WM_NCCREATE", /* 0x0081 */
93 "WM_NCDESTROY", /* 0x0082 */
94 "WM_NCCALCSIZE", /* 0x0083 */
95 "WM_NCHITTEST", /* 0x0084 */
96 "WM_NCPAINT", /* 0x0085 */
97 "WM_NCACTIVATE", /* 0x0086 */
98 "WM_GETDLGCODE", /* 0x0087 */
99 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
101 /* 0x0090 */
102 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
103 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
105 /* 0x00A0 */
106 "WM_NCMOUSEMOVE", /* 0x00A0 */
107 "WM_NCLBUTTONDOWN", /* 0x00A1 */
108 "WM_NCLBUTTONUP", /* 0x00A2 */
109 "WM_NCLBUTTONDBLCLK", /* 0x00A3 */
110 "WM_NCRBUTTONDOWN", /* 0x00A4 */
111 "WM_NCRBUTTONUP", /* 0x00A5 */
112 "WM_NCRBUTTONDBLCLK", /* 0x00A6 */
113 "WM_NCMBUTTONDOWN", /* 0x00A7 */
114 "WM_NCMBUTTONUP", /* 0x00A8 */
115 "WM_NCMBUTTONDBLCLK", /* 0x00A9 */
116 NULL, NULL, NULL, NULL, NULL, NULL,
118 /* 0x00B0 */
119 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
120 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
122 /* 0x00C0 */
123 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
124 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
126 /* 0x00D0 */
127 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
128 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
130 /* 0x00E0 */
131 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
132 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
134 /* 0x00F0 */
135 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
136 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
138 "WM_KEYDOWN", /* 0x0100 */
139 "WM_KEYUP", /* 0x0101 */
140 "WM_CHAR", /* 0x0102 */
141 "WM_DEADCHAR", /* 0x0103 */
142 "WM_SYSKEYDOWN", /* 0x0104 */
143 "WM_SYSKEYUP", /* 0x0105 */
144 "WM_SYSCHAR", /* 0x0106 */
145 "WM_SYSDEADCHAR", /* 0x0107 */
146 "WM_KEYLAST", /* 0x0108 */
147 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
149 "WM_INITDIALOG", /* 0x0110 */
150 "WM_COMMAND", /* 0x0111 */
151 "WM_SYSCOMMAND", /* 0x0112 */
152 "WM_TIMER", /* 0x0113 */
153 "WM_HSCROLL", /* 0x0114 */
154 "WM_VSCROLL", /* 0x0115 */
155 "WM_INITMENU", /* 0x0116 */
156 "WM_INITMENUPOPUP", /* 0x0117 */
157 "WM_SYSTIMER", /* 0x0118 */
158 NULL, NULL, NULL, NULL, NULL, NULL,
159 "WM_MENUSELECT", /* 0x011f */
161 "WM_MENUCHAR", /* 0x0120 */
162 "WM_ENTERIDLE", /* 0x0121 */
163 NULL, NULL, NULL, NULL, NULL, NULL,
164 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
166 /* 0x0130 */
167 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
168 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
170 /* 0x0140 */
171 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
172 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
174 /* 0x0150 */
175 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
176 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
178 /* 0x0160 */
179 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
180 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
182 /* 0x0170 */
183 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
184 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
186 /* 0x0180 */
187 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
188 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
190 /* 0x0190 */
191 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
192 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
194 /* 0x01A0 */
195 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
196 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
198 /* 0x01B0 */
199 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
200 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
202 /* 0x01C0 */
203 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
204 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
206 /* 0x01D0 */
207 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
208 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
210 /* 0x01E0 */
211 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
212 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
214 /* 0x01F0 */
215 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
216 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
218 "WM_MOUSEMOVE", /* 0x0200 */
219 "WM_LBUTTONDOWN", /* 0x0201 */
220 "WM_LBUTTONUP", /* 0x0202 */
221 "WM_LBUTTONDBLCLK", /* 0x0203 */
222 "WM_RBUTTONDOWN", /* 0x0204 */
223 "WM_RBUTTONUP", /* 0x0205 */
224 "WM_RBUTTONDBLCLK", /* 0x0206 */
225 "WM_MBUTTONDOWN", /* 0x0207 */
226 "WM_MBUTTONUP", /* 0x0208 */
227 "WM_MBUTTONDBLCLK", /* 0x0209 */
228 NULL, NULL, NULL, NULL, NULL, NULL,
230 "WM_PARENTNOTIFY", /* 0x0210 */
231 "WM_ENTERMENULOOP", /* 0x0211 */
232 "WM_EXITMENULOOP", /* 0x0212 */
233 NULL, NULL, NULL, NULL, NULL,
234 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
236 "WM_MDICREATE", /* 0x0220 */
237 "WM_MDIDESTROY", /* 0x0221 */
238 "WM_MDIACTIVATE", /* 0x0222 */
239 "WM_MDIRESTORE", /* 0x0223 */
240 "WM_MDINEXT", /* 0x0224 */
241 "WM_MDIMAXIMIZE", /* 0x0225 */
242 "WM_MDITILE", /* 0x0226 */
243 "WM_MDICASCADE", /* 0x0227 */
244 "WM_MDIICONARRANGE", /* 0x0228 */
245 "WM_MDIGETACTIVE", /* 0x0229 */
247 NULL, NULL, NULL, NULL, NULL, NULL,
248 /* 0x0230*/
249 "WM_MDISETMENU", /* 0x0230 */
250 "WM_ENTERSIZEMOVE", /* 0x0231 */
251 "WM_EXITSIZEMOVE", /* 0x0232 */
252 NULL, NULL, NULL, NULL, NULL,
253 /* 0x0238*/
254 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
256 /* 0x0240 */
257 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
258 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
260 /* 0x0250 */
261 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
262 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
264 /* 0x0260 */
265 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
266 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
267 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
268 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
270 /* 0x0280 */
271 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
272 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
273 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
274 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
276 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
277 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
278 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
279 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
281 /* 0x02c0 */
282 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
283 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
284 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
285 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
287 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
288 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
289 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
290 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
292 /* 0x0300 */
293 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
294 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
295 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
296 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
298 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
299 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
300 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
301 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
303 /* 0x0340 */
304 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
305 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
306 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
307 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
309 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
310 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
311 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
312 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
314 /* 0x0380 */
315 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
316 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
317 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
318 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
320 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
321 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
322 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
323 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
325 /* 0x03c0 */
326 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
327 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
328 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
329 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
331 /* 0x03e0 */
332 "WM_DDE_INITIATE", /* 0x3E0 */
333 "WM_DDE_TERMINATE", /* 0x3E1 */
334 "WM_DDE_ADVISE", /* 0x3E2 */
335 "WM_DDE_UNADVISE", /* 0x3E3 */
336 "WM_DDE_ACK", /* 0x3E4 */
337 "WM_DDE_DATA", /* 0x3E5 */
338 "WM_DDE_REQUEST", /* 0x3E6 */
339 "WM_DDE_POKE", /* 0x3E7 */
340 "WM_DDE_EXECUTE" /* 0x3E8 */
343 char SpyFilters[256+1];
344 char SpyIncludes[256+1];
346 /**********************************************************************
347 * SpyMessage
349 void SpyMessage(HWND hwnd, WORD msg, WORD wParam, LONG lParam)
351 char msg_name[80];
353 if(!debugging_spy)
354 return;
356 if (msg > SPY_MAX_MSGNUM || MessageTypeNames[msg] == NULL)
357 sprintf(msg_name, "%04x", msg);
358 else
359 strcpy(msg_name, MessageTypeNames[msg]);
361 strcat(msg_name, ";");
363 if ((strlen(SpyIncludes) == 0 || strstr(SpyIncludes, msg_name) != NULL) &&
364 strstr(SpyFilters, msg_name) == NULL)
366 msg_name[strlen(msg_name) - 1] = '\0';
367 dprintf_spy(stddeb, "%04x %20.20s %04x %04x %08lx\n",
368 hwnd, msg_name, msg, wParam, lParam);
372 /**********************************************************************
373 * SpyInit
375 void SpyInit(void)
377 GetPrivateProfileString("spy", "exclude", "", SpyFilters,
378 sizeof(SpyFilters)-1, WINE_INI);
379 GetPrivateProfileString("spy", "include", "", SpyIncludes,
380 sizeof(SpyIncludes)-1, WINE_INI);
382 if (*SpyIncludes != 0) {
383 strcat(SpyIncludes, ";");
385 if (*SpyFilters != 0) {
386 strcat(SpyFilters, ";");