|
|
1.1 root 1: /***************************************************************************\
2: * options.c - Spy code for several options type dialogs
3: *
4: * Created by Microsoft Corporation, 1989
5: \***************************************************************************/
6:
7: #define INCL_WINBUTTONS
8: #define INCL_WINDIALOGS
9: #define INCL_WINHEAP /* needed for spy.h */
10: #define INCL_WINLISTBOXES
11: #define INCL_WINMESSAGEMGR
12: #define INCL_WINPOINTERS /* needed for spy.h */
13: #include <os2.h>
14: #include <spyhook.h>
15: #include <stdio.h>
16: #include <stdlib.h>
17: #include <string.h>
18: #include <time.h>
19: #include "spy.h"
20:
21: /* Prototypes */
22: MRESULT CALLBACK SpyOutputsDlgProc(HWND, USHORT, MPARAM, MPARAM);
23: MRESULT CALLBACK SpySaveListDlgProc(HWND, USHORT, MPARAM, MPARAM);
24: MRESULT CALLBACK AboutWndProc(HWND, USHORT, MPARAM, MPARAM);
25:
26: /***************************************************************************\
27: * MRESULT CALLBACK SpyOutputsDlgProc (hwnd, msg, mp1, mp2)
28: \***************************************************************************/
29: MRESULT CALLBACK SpyOutputsDlgProc(hwnd, msg, mp1, mp2)
30: HWND hwnd;
31: USHORT msg;
32: MPARAM mp1;
33: MPARAM mp2;
34: {
35: USHORT wAction;
36:
37: switch (msg) {
38:
39: case WM_INITDLG:
40: /*
41: * Now initialize the output options in the dialog
42: */
43: WinSendDlgItemMsg(hwnd, DID_WINDOW, BM_SETCHECK,
44: (MPARAM)spyopt.fWindow, 0L);
45: WinSendDlgItemMsg(hwnd, DID_FILE, BM_SETCHECK,
46: (MPARAM)spyopt.fFile, 0L);
47:
48: WinSetDlgItemShort(hwnd, DID_WINDOWLINES, spyopt.cWindowLines, FALSE);
49: WinSetDlgItemText(hwnd, DID_FILENAME, spystr.szFileName);
50:
51:
52: break;
53:
54: case WM_COMMAND:
55: switch (SHORT1FROMMP(mp1)) {
56: case DID_OK:
57:
58: /*
59: * Now retrieve the output options from the
60: * dialog
61: */
62: spyopt.fWindow = (BOOL)WinSendDlgItemMsg(hwnd,
63: DID_WINDOW, BM_QUERYCHECK, 0L, 0L);
64: spyopt.fFile = (BOOL)WinSendDlgItemMsg(hwnd,
65: DID_FILE, BM_QUERYCHECK, 0L, 0L);
66:
67: WinQueryDlgItemShort(hwnd, DID_WINDOWLINES, &spyopt.cWindowLines, FALSE);
68: WinQueryDlgItemText(hwnd, DID_FILENAME,
69: sizeof(spystr.szFileName), spystr.szFileName);
70:
71: /*
72: * Now take care of file operations
73: * If a file is already active, we will continue to use it, and
74: * ignore the case where the user may have changed file names
75: * Will truncate any file.
76: */
77: if (spyopt.fFile) {
78: if (spyopt.hfileSpy == NULL)
79: if (DosOpen((PSZ)spystr.szFileName, &spyopt.hfileSpy,
80: (USHORT far *)&wAction, 0L, 0,
81: 0x0012, 0x00C1, 0L) != 0)
82: spyopt.hfileSpy = NULL; /* Failed on open */
83: } else {
84: if (spyopt.hfileSpy != NULL) {
85: /* file open, not outputing, close it now */
86: DosClose (spyopt.hfileSpy);
87: spyopt.hfileSpy = NULL;
88: }
89: }
90: /* Fall through to DID_CANCEL */
91: case DID_CANCEL:
92: /* Now dismiss the dialog */
93: WinDismissDlg(hwnd, SHORT1FROMMP(mp1));
94: break;
95: }
96: break;
97:
98: default:
99: return(WinDefDlgProc(hwnd, msg, mp1, mp2));
100: break;
101: }
102: return 0L;
103: }
104:
105:
106:
107:
108: /***************************************************************************\
109: * MRESULT CALLBACK SpySaveListDlgProc(hwnd, msg, mp1, mp2)
110: *
111: * The Spy Windows Dialog procedure
112: \***************************************************************************/
113: MRESULT CALLBACK SpySaveListDlgProc(hwnd, msg, mp1, mp2)
114: HWND hwnd;
115: USHORT msg;
116: MPARAM mp1;
117: MPARAM mp2;
118: {
119: HFILE hfileOut;
120: char szTemp[100];
121: char szTime[10];
122: char szDate[10];
123: SHORT cItems;
124: SHORT iItem;
125: USHORT cch;
126: USHORT cchWritten;
127: USHORT wAction;
128: ULONG lTemp;
129:
130: switch (msg) {
131:
132: case WM_INITDLG:
133: WinSendDlgItemMsg(hwnd, DID_APPEND, BM_SETCHECK,
134: (MPARAM)spyopt.fAppend, 0L);
135: /* Initialize the dialog items */
136: WinSetDlgItemText(hwnd, DID_FILENAME, spystr.szSaveFileName);
137: break;
138:
139: case WM_COMMAND:
140: switch (SHORT1FROMMP(mp1)) {
141: case DID_OK:
142: /*
143: * Get the file name, and try to open the file,
144: * Then loop through and dump the listbox contents to the
145: * file.
146: */
147: spyopt.fAppend = (BOOL)WinSendDlgItemMsg(hwnd,
148: DID_APPEND, BM_QUERYCHECK, 0L, 0L);
149:
150: WinQueryDlgItemText(hwnd, DID_FILENAME,
151: sizeof(spystr.szSaveFileName), spystr.szSaveFileName);
152:
153: if (DosOpen((PSZ)spystr.szSaveFileName, (HFILE far *)&hfileOut,
154: (USHORT far *)&wAction, 0L, 0,
155: spyopt.fAppend? 0x0011 : 0x0012, 0x00C1, 0L) == 0) {
156:
157: /* If append, get to the end of the file */
158: if (spyopt.fAppend)
159: DosChgFilePtr(hfileOut, 0L, 2, (PULONG)&lTemp);
160:
161: /* Get count of items */
162: cItems = (SHORT)WinSendMsg(hwndSpyList, LM_QUERYITEMCOUNT,
163: 0L, 0L);
164:
165: /* Write out a title block to the file */
166: _strdate(szDate);
167: _strtime(szTime);
168: DosWrite(hfileOut,
169: (PSZ)"***************************************\r\n",
170: 41, (PUSHORT)&cchWritten);
171: cch = sprintf(szTemp, "* Spy: %-10s %-10s *\r\n",
172: szDate, szTime);
173: DosWrite(hfileOut, (PSZ)szTemp, cch, (PUSHORT)&cchWritten);
174:
175: DosWrite(hfileOut,
176: (PSZ)"***************************************\r\n",
177: 41, (PUSHORT)&cchWritten);
178:
179:
180: /* Now output the list to the file */
181: for (iItem = 0; iItem < cItems; iItem++) {
182: cch = (SHORT)WinSendMsg(hwndSpyList, LM_QUERYITEMTEXT,
183: MPFROM2SHORT(iItem, sizeof(szTemp)),
184: (MPARAM)(PSZ)szTemp);
185: /* Add Newline at end of string */
186: szTemp[cch++] = '\r';
187: szTemp[cch++] = '\n';
188: szTemp[cch] = '\0';
189: DosWrite(hfileOut, (PSZ)szTemp, cch,
190: (PUSHORT)&cchWritten);
191: }
192: DosClose(hfileOut);
193: }
194:
195: case DID_CANCEL:
196: /* Now dismiss the dialog */
197: WinDismissDlg(hwnd, SHORT1FROMMP(mp1));
198: break;
199: break;
200: }
201:
202: default:
203: return(WinDefDlgProc(hwnd, msg, mp1, mp2));
204: }
205: return 0L;
206: }
207:
208:
209:
210:
211: /**************************************************************************\
212: * AboutWndProc(HWND hwnd, USHORT message, MPARAM mp1, MPARAM mp2)
213: *
214: * About Spy... Dialog procedure
215: \***************************************************************************/
216: MRESULT CALLBACK AboutWndProc(hwnd, message, mp1, mp2)
217: HWND hwnd;
218: USHORT message;
219: MPARAM mp1;
220: MPARAM mp2;
221: {
222: switch (message) {
223: case WM_COMMAND:
224: WinDismissDlg(hwnd, TRUE);
225: break;
226: default:
227: return(WinDefDlgProc(hwnd, message, mp1, mp2));
228: break;
229: }
230: return 0L;
231:
232: } /* end aboutwndproc */
233:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.