Release 960131
[wine/multimedia.git] / misc / spy.c
blob81f2852bbee48e69cde59b201678dc9e804957dd
1 /* SPY.C
3 * Copyright 1994, Bob Amstadt
4 * 1995, Alex Korobka
5 */
7 #include <stdlib.h>
8 #include <stdio.h>
9 #include <X11/Xlib.h>
10 #include <X11/Xresource.h>
11 #include <string.h>
12 #include "windows.h"
13 #include "options.h"
14 #include "stddebug.h"
15 #include "debug.h"
16 #include "spy.h"
18 #define SPY_MAX_MSGNUM WM_USER
19 #define SPY_MAX_INDENTLEVEL 64
21 const char *MessageTypeNames[SPY_MAX_MSGNUM + 1] =
23 "WM_NULL", /* 0x00 */
24 "WM_CREATE",
25 "WM_DESTROY",
26 "WM_MOVE",
27 "WM_SIZEWAIT",
28 "WM_SIZE",
29 "WM_ACTIVATE",
30 "WM_SETFOCUS",
31 "WM_KILLFOCUS",
32 "WM_SETVISIBLE",
33 "WM_ENABLE",
34 "WM_SETREDRAW",
35 "WM_SETTEXT",
36 "WM_GETTEXT",
37 "WM_GETTEXTLENGTH",
38 "WM_PAINT",
39 "WM_CLOSE", /* 0x10 */
40 "WM_QUERYENDSESSION",
41 "WM_QUIT",
42 "WM_QUERYOPEN",
43 "WM_ERASEBKGND",
44 "WM_SYSCOLORCHANGE",
45 "WM_ENDSESSION",
46 "WM_SYSTEMERROR",
47 "WM_SHOWWINDOW",
48 "WM_CTLCOLOR",
49 "WM_WININICHANGE",
50 "WM_DEVMODECHANGE",
51 "WM_ACTIVATEAPP",
52 "WM_FONTCHANGE",
53 "WM_TIMECHANGE",
54 "WM_CANCELMODE",
55 "WM_SETCURSOR", /* 0x20 */
56 "WM_MOUSEACTIVATE",
57 "WM_CHILDACTIVATE",
58 "WM_QUEUESYNC",
59 "WM_GETMINMAXINFO",
60 "WM_UNUSED3",
61 "WM_PAINTICON",
62 "WM_ICONERASEBKGND",
63 "WM_NEXTDLGCTL",
64 "WM_ALTTABACTIVE",
65 "WM_SPOOLERSTATUS",
66 "WM_DRAWITEM",
67 "WM_MEASUREITEM",
68 "WM_DELETEITEM",
69 "WM_VKEYTOITEM",
70 "WM_CHARTOITEM",
71 "WM_SETFONT", /* 0x30 */
72 "WM_GETFONT",
73 "WM_SETHOTKEY",
74 "WM_GETHOTKEY",
75 "WM_FILESYSCHANGE",
76 "WM_ISACTIVEICON",
77 "WM_QUERYPARKICON",
78 "WM_QUERYDRAGICON",
79 "WM_QUERYSAVESTATE",
80 "WM_COMPAREITEM",
81 "WM_TESTING", NULL,
82 "WM_OTHERWINDOWCREATED",
83 "WM_OTHERWINDOWDESTROYED",
84 "WM_ACTIVATESHELLWINDOW", NULL,
86 NULL, /* 0x40 */
87 "WM_COMPACTING", NULL, NULL,
88 "WM_COMMNOTIFY", NULL,
89 "WM_WINDOWPOSCHANGING", /* 0x0046 */
90 "WM_WINDOWPOSCHANGED", /* 0x0047 */
91 "WM_POWER", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
93 NULL, /* 0x0050 */
94 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
95 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
97 /* 0x0060 */
98 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
99 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
101 /* 0x0070 */
102 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
103 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
105 NULL, /* 0x0080 */
106 "WM_NCCREATE", /* 0x0081 */
107 "WM_NCDESTROY", /* 0x0082 */
108 "WM_NCCALCSIZE", /* 0x0083 */
109 "WM_NCHITTEST", /* 0x0084 */
110 "WM_NCPAINT", /* 0x0085 */
111 "WM_NCACTIVATE", /* 0x0086 */
112 "WM_GETDLGCODE", /* 0x0087 */
113 "WM_SYNCPAINT",
114 "WM_SYNCTASK", NULL, NULL, NULL, NULL, NULL, NULL,
116 /* 0x0090 */
117 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
118 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
120 /* 0x00A0 */
121 "WM_NCMOUSEMOVE", /* 0x00A0 */
122 "WM_NCLBUTTONDOWN", /* 0x00A1 */
123 "WM_NCLBUTTONUP", /* 0x00A2 */
124 "WM_NCLBUTTONDBLCLK", /* 0x00A3 */
125 "WM_NCRBUTTONDOWN", /* 0x00A4 */
126 "WM_NCRBUTTONUP", /* 0x00A5 */
127 "WM_NCRBUTTONDBLCLK", /* 0x00A6 */
128 "WM_NCMBUTTONDOWN", /* 0x00A7 */
129 "WM_NCMBUTTONUP", /* 0x00A8 */
130 "WM_NCMBUTTONDBLCLK", /* 0x00A9 */
131 NULL, NULL, NULL, NULL, NULL, NULL,
133 /* 0x00B0 */
134 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
135 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
137 /* 0x00C0 */
138 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
139 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
141 /* 0x00D0 */
142 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
143 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
145 /* 0x00E0 */
146 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
147 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
149 /* 0x00F0 */
150 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
151 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
153 "WM_KEYDOWN", /* 0x0100 */
154 "WM_KEYUP", /* 0x0101 */
155 "WM_CHAR", /* 0x0102 */
156 "WM_DEADCHAR", /* 0x0103 */
157 "WM_SYSKEYDOWN", /* 0x0104 */
158 "WM_SYSKEYUP", /* 0x0105 */
159 "WM_SYSCHAR", /* 0x0106 */
160 "WM_SYSDEADCHAR", /* 0x0107 */
161 "WM_KEYLAST", /* 0x0108 */
162 NULL,
163 "WM_CONVERTREQUEST",
164 "WM_CONVERTRESULT",
165 "WM_INTERIM", NULL, NULL, NULL,
167 "WM_INITDIALOG", /* 0x0110 */
168 "WM_COMMAND", /* 0x0111 */
169 "WM_SYSCOMMAND", /* 0x0112 */
170 "WM_TIMER", /* 0x0113 */
171 "WM_HSCROLL", /* 0x0114 */
172 "WM_VSCROLL", /* 0x0115 */
173 "WM_INITMENU", /* 0x0116 */
174 "WM_INITMENUPOPUP", /* 0x0117 */
175 "WM_SYSTIMER", /* 0x0118 */
176 NULL, NULL, NULL, NULL, NULL, NULL,
177 "WM_MENUSELECT", /* 0x011f */
179 "WM_MENUCHAR", /* 0x0120 */
180 "WM_ENTERIDLE", /* 0x0121 */
181 NULL, NULL, NULL, NULL, NULL, NULL,
182 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
184 /* 0x0130 */
185 NULL, "wm_lbtrackpoint",
186 NULL, NULL, NULL, NULL, NULL, NULL,
187 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
189 /* 0x0140 */
190 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
191 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
193 /* 0x0150 */
194 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
195 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
197 /* 0x0160 */
198 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
199 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
201 /* 0x0170 */
202 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
203 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
205 /* 0x0180 */
206 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
207 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
209 /* 0x0190 */
210 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
211 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
213 /* 0x01A0 */
214 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
215 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
217 /* 0x01B0 */
218 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
219 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
221 /* 0x01C0 */
222 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
223 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
225 /* 0x01D0 */
226 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
227 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
229 /* 0x01E0 */
230 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
231 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
233 /* 0x01F0 */
234 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
235 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
237 "WM_MOUSEMOVE", /* 0x0200 */
238 "WM_LBUTTONDOWN", /* 0x0201 */
239 "WM_LBUTTONUP", /* 0x0202 */
240 "WM_LBUTTONDBLCLK", /* 0x0203 */
241 "WM_RBUTTONDOWN", /* 0x0204 */
242 "WM_RBUTTONUP", /* 0x0205 */
243 "WM_RBUTTONDBLCLK", /* 0x0206 */
244 "WM_MBUTTONDOWN", /* 0x0207 */
245 "WM_MBUTTONUP", /* 0x0208 */
246 "WM_MBUTTONDBLCLK", /* 0x0209 */
247 NULL, NULL, NULL, NULL, NULL, NULL,
249 "WM_PARENTNOTIFY", /* 0x0210 */
250 "WM_ENTERMENULOOP", /* 0x0211 */
251 "WM_EXITMENULOOP", /* 0x0212 */
252 "WM_NEXTMENU", /* 0x0213 */
253 NULL, NULL, NULL, NULL,
254 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
256 "WM_MDICREATE", /* 0x0220 */
257 "WM_MDIDESTROY", /* 0x0221 */
258 "WM_MDIACTIVATE", /* 0x0222 */
259 "WM_MDIRESTORE", /* 0x0223 */
260 "WM_MDINEXT", /* 0x0224 */
261 "WM_MDIMAXIMIZE", /* 0x0225 */
262 "WM_MDITILE", /* 0x0226 */
263 "WM_MDICASCADE", /* 0x0227 */
264 "WM_MDIICONARRANGE", /* 0x0228 */
265 "WM_MDIGETACTIVE", /* 0x0229 */
267 "wm_dropobject",
268 "wm_querydropobject",
269 "wm_begindrag",
270 "wm_dragloop",
271 "wn_dragselect",
272 "wm_dragmove",
274 /* 0x0230*/
275 "WM_MDISETMENU", /* 0x0230 */
276 "WM_ENTERSIZEMOVE", /* 0x0231 */
277 "WM_EXITSIZEMOVE", /* 0x0232 */
278 "WM_DROPFILES", /* 0x0233 */
279 NULL, NULL, NULL, NULL,
280 /* 0x0238*/
281 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
283 /* 0x0240 */
284 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
285 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
287 /* 0x0250 */
288 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
289 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
291 /* 0x0260 */
292 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
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,
297 /* 0x0280 */
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 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
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,
308 /* 0x02c0 */
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 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
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,
319 "WM_CUT", /* 0x0300 */
320 "WM_COPY",
321 "WM_PASTE",
322 "WM_CLEAR",
323 "WM_UNDO",
324 "WM_RENDERFORMAT",
325 "WM_RENDERALLFORMATS",
326 "WM_DESTROYCLIPBOARD",
327 "WM_DRAWCLIPBOARD",
328 "WM_PAINTCLIPBOARD",
329 "WM_VSCROLLCLIPBOARD",
330 "WM_SIZECLIPBOARD",
331 "WM_ASKCBFORMATNAME",
332 "WM_CHANGECBCHAIN",
333 "WM_HSCROLLCLIPBOARD",
334 "WM_QUERYNEWPALETTE", /* 0x030f*/
336 "WM_PALETTEISCHANGING",
337 "WM_PALETTECHANGED", /* 0x0311 */
338 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
339 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
341 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
342 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
343 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
344 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
346 /* 0x0340 */
347 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
348 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
349 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
350 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
352 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
353 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
354 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
355 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
357 /* 0x0380 */
358 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
359 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
361 "WM_COALESCE_FIRST",
362 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
363 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
364 "WM_COALESCE_LAST",
366 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
367 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
368 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
369 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
371 /* 0x03c0 */
372 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
373 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
374 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
375 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
377 /* 0x03e0 */
378 "WM_DDE_INITIATE", /* 0x3E0 */
379 "WM_DDE_TERMINATE", /* 0x3E1 */
380 "WM_DDE_ADVISE", /* 0x3E2 */
381 "WM_DDE_UNADVISE", /* 0x3E3 */
382 "WM_DDE_ACK", /* 0x3E4 */
383 "WM_DDE_DATA", /* 0x3E5 */
384 "WM_DDE_REQUEST", /* 0x3E6 */
385 "WM_DDE_POKE", /* 0x3E7 */
386 "WM_DDE_EXECUTE", /* 0x3E8 */
387 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
390 /* 0x03f0 */
391 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
392 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
394 "WM_USER"
397 static BOOL SpyFilters [SPY_MAX_MSGNUM+1];
398 static BOOL SpyIncludes[SPY_MAX_MSGNUM+1];
400 static int iSpyMessageIndentLevel = 0;
401 static char lpstrSpyMessageIndent[SPY_MAX_INDENTLEVEL];
402 static char *lpstrSpyMessageFromWine = "Wine";
403 static char lpstrSpyMessageFromTask[10];
404 static char *lpstrSpyMessageFromSelf = "self";
405 static char *lpstrSpyMessageFrom = NULL;
408 /**********************************************************************
409 * EnterSpyMessage
411 void EnterSpyMessage(int iFlag, HWND hWnd, WORD msg, WORD wParam, LONG lParam)
413 HTASK hTask = GetWindowTask(hWnd);
414 WORD wCheckMsg = (msg > WM_USER)? WM_USER: msg;
416 if( !SpyIncludes[wCheckMsg] || SpyFilters[wCheckMsg]) return;
418 /* each SPY_SENDMESSAGE must be complemented by call to ExitSpyMessage */
419 switch(iFlag)
421 case SPY_DISPATCHMESSAGE:
422 if(msg <= WM_USER)
424 if(MessageTypeNames[msg])
425 dprintf_message(stddeb,"("NPFMT") message [%04x] %s dispatched wp=%04x lp=%08lx\n",
426 hWnd, msg, MessageTypeNames[msg], wParam, lParam);
427 else
428 dprintf_message(stddeb,"("NPFMT") message [%04x] dispatched wp=%04x lp=%08lx\n",
429 hWnd, msg, wParam, lParam);
431 else
432 dprintf_message(stddeb,"("NPFMT") message [%04x] WM_USER+%04d dispatched wp=%04x lp=%08lx\n",
433 hWnd, msg, msg-WM_USER ,wParam ,lParam);
434 break;
435 case SPY_SENDMESSAGE:
436 if(hTask == GetCurrentTask())
437 lpstrSpyMessageFrom = lpstrSpyMessageFromSelf;
438 else if(hTask == NULL)
439 lpstrSpyMessageFrom = lpstrSpyMessageFromWine;
440 else
442 sprintf(lpstrSpyMessageFromTask, "task "NPFMT, hTask);
443 lpstrSpyMessageFrom = lpstrSpyMessageFromTask;
446 if(msg <= WM_USER)
448 if(MessageTypeNames[msg])
449 dprintf_message(stddeb,"%s("NPFMT") message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
450 lpstrSpyMessageIndent,
451 hWnd, msg, MessageTypeNames[msg],
452 lpstrSpyMessageFrom,
453 wParam, lParam);
454 else
455 dprintf_message(stddeb,"%s("NPFMT") message [%04x] sent from %s wp=%04x lp=%08lx\n",
456 lpstrSpyMessageIndent,
457 hWnd, msg,
458 lpstrSpyMessageFrom,
459 wParam, lParam);
461 else
462 dprintf_message(stddeb,"%s("NPFMT") message [%04x] WM_USER+%04x sent from %s wp=%04x lp=%08lx\n",
463 lpstrSpyMessageIndent,
464 hWnd, msg, msg-WM_USER,
465 lpstrSpyMessageFrom,
466 wParam, lParam);
468 if(SPY_MAX_INDENTLEVEL > iSpyMessageIndentLevel )
470 iSpyMessageIndentLevel++;
471 lpstrSpyMessageIndent[iSpyMessageIndentLevel]='\0';
472 lpstrSpyMessageIndent[iSpyMessageIndentLevel-1] ='\t';
474 break;
475 case SPY_DEFWNDPROC:
476 if(msg <= WM_USER)
477 if(MessageTypeNames[msg])
478 dprintf_message(stddeb, "%s("NPFMT") DefWindowProc: %s [%04x] wp=%04x lp=%08lx\n",
479 lpstrSpyMessageIndent,
480 hWnd, MessageTypeNames[msg], msg, wParam, lParam );
481 else
482 dprintf_message(stddeb, "%s("NPFMT") DefWindowProc: [%04x] wp=%04x lp=%08lx\n",
483 lpstrSpyMessageIndent,
484 hWnd, msg, wParam, lParam );
485 else
486 dprintf_message(stddeb, "%s("NPFMT") DefWindowProc: WM_USER+%d [%04x] wp=%04x lp=%08lx\n",
487 lpstrSpyMessageIndent,
488 hWnd, msg - WM_USER, msg, wParam, lParam );
489 break;
490 default:
495 /**********************************************************************
496 * ExitSpyMessage
498 void ExitSpyMessage(int iFlag, HWND hWnd, WORD msg, LONG lReturn)
500 WORD wCheckMsg = (msg > WM_USER)? WM_USER: msg;
502 if( !SpyIncludes[wCheckMsg] || SpyFilters[wCheckMsg]) return;
504 iSpyMessageIndentLevel--;
505 lpstrSpyMessageIndent[iSpyMessageIndentLevel]='\0';
507 switch(iFlag)
509 case SPY_RESULT_INVALIDHWND:
510 dprintf_message(stddeb,"%s("NPFMT") message [%04x] HAS INVALID HWND\n",
511 lpstrSpyMessageIndent, hWnd, msg);
512 break;
513 case SPY_RESULT_OK:
514 dprintf_message(stddeb,"%s("NPFMT") message [%04x] returned %08lx\n",
515 lpstrSpyMessageIndent, hWnd, msg, lReturn);
516 break;
517 default:
521 /**********************************************************************
522 * SpyInit
524 void SpyInit(void)
526 int i;
527 char lpstrBuffer[512];
529 for(i=0; i <= SPY_MAX_MSGNUM; i++) SpyFilters[i] = SpyIncludes[i] = FALSE;
531 PROFILE_GetWineIniString( "spy", "Exclude", "",
532 lpstrBuffer, sizeof(lpstrBuffer) );
533 dprintf_message(stddeb,"SpyInit: Exclude=%s\n",lpstrBuffer);
534 if( *lpstrBuffer != 0 )
535 if(strstr(lpstrBuffer,"EXCLUDEALL"))
536 for(i=0; i <= SPY_MAX_MSGNUM; i++) SpyFilters[i] = TRUE;
537 else
538 for(i=0; i <= SPY_MAX_MSGNUM; i++)
539 if(MessageTypeNames[i])
540 if(strstr(lpstrBuffer,MessageTypeNames[i])) SpyFilters[i] = TRUE;
542 PROFILE_GetWineIniString( "spy", "Include", "INCLUDEALL",
543 lpstrBuffer, sizeof(lpstrBuffer) );
544 dprintf_message(stddeb,"SpyInit: Include=%s\n",lpstrBuffer);
545 if( *lpstrBuffer != 0 )
546 if(strstr(lpstrBuffer,"INCLUDEALL"))
547 for(i=0; i <= SPY_MAX_MSGNUM; i++) SpyIncludes[i] = TRUE;
548 else
549 for(i=0; i <= SPY_MAX_MSGNUM; i++)
550 if(MessageTypeNames[i])
551 if(strstr(lpstrBuffer,MessageTypeNames[i])) SpyIncludes[i] = TRUE;