source: trunk/dll/sysinfo.c@ 2

Last change on this file since 2 was 2, checked in by root, 23 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 17.2 KB
Line 
1#define INCL_DOS
2#define INCL_WIN
3
4#include <os2.h>
5#include <stdlib.h>
6#include <stdio.h>
7#include <string.h>
8#include "fm3dll.h"
9#include "fm3dlg.h"
10
11#pragma data_seg(DATA1)
12#pragma alloc_text(SYSINFO,SysInfoDlgProc,RunRmview)
13
14
15#ifdef NEVER
16
17VOID RunRmview (VOID *arg) {
18
19 HWND hwnd = (HWND)arg;
20 CHAR s[2048],*p;
21 HAB thab;
22 HMQ thmq;
23 FILE *fp;
24 HFILE oldstdout,newstdout;
25
26 DosError(FERR_DISABLEHARDERR);
27
28 thab = WinInitialize(0);
29 thmq = WinCreateMsgQueue(thab,0);
30 WinCancelShutdown(thmq,TRUE);
31 if(thab && thmq) {
32 if(!WinIsWindow(thab,hwnd))
33 goto Abort;
34 unlinkf("%s","$RMVIEW.#$#");
35 fp = fopen("$RMVIEW.#$#","w");
36 if(fp) {
37 newstdout = -1;
38 if(DosDupHandle(fileno(stdout),&newstdout)) {
39 fclose(fp);
40 goto Abort;
41 }
42 oldstdout = fileno(stdout);
43 DosDupHandle(fileno(fp),&oldstdout);
44 runemf2(SEPARATE | INVISIBLE | FULLSCREEN | BACKGROUND | WAIT,
45 hwnd,NULL,NULL,"%s","RMVIEW.EXE");
46 oldstdout = fileno(stdout);
47 DosDupHandle(newstdout,&oldstdout);
48 DosClose(newstdout);
49 fclose(fp);
50 }
51 else
52 goto Abort;
53 if(!WinIsWindow(thab,hwnd))
54 goto Abort;
55 fp = fopen("$RMVIEW.#$#","r");
56 if(fp) {
57 fgets(s,2048,fp);
58 fgets(s,2048,fp);
59 if(!feof(fp) && WinIsWindow(thab,hwnd))
60 WinSendDlgItemMsg(hwnd,SYS_LISTBOX,LM_INSERTITEM,
61 MPFROM2SHORT(LIT_END,0),
62 MPFROMP(" -= RMView Physical Info =-"));
63 while(!feof(fp)) {
64 strset(s,0);
65 if(!fgets(s,2048,fp))
66 break;
67 s[2048] = 0;
68 stripcr(s);
69 rstrip(s);
70 p = s;
71 while(*p == '\r' || *p == '\n')
72 p++;
73 if(!WinIsWindow(thab,hwnd))
74 break;
75 WinSendDlgItemMsg(hwnd,SYS_LISTBOX,LM_INSERTITEM,
76 MPFROM2SHORT(LIT_END,0),
77 MPFROMP(p));
78 }
79 fclose(fp);
80 }
81Abort:
82 WinDestroyMsgQueue(thmq);
83 WinTerminate(thab);
84 }
85 DosForceDelete("$RMVIEW.#$#");
86}
87
88#endif
89
90
91MRESULT EXPENTRY SysInfoDlgProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {
92
93#ifdef NEVER
94 static HWND me = (HWND)0;
95 static LONG ypos = 0;
96 static HPOINTER hptrIcon = (HPOINTER)0;
97
98 switch(msg) {
99 case WM_INITDLG:
100 if(me) {
101 WinSetWindowPos(me,HWND_TOP,0,0,0,0,SWP_ACTIVATE |
102 SWP_SHOW | SWP_RESTORE | SWP_ZORDER);
103 WinDismissDlg(hwnd,0);
104 break;
105 }
106 hptrIcon = WinLoadPointer(HWND_DESKTOP,FM3ModHandle,SYS_FRAME);
107 WinDefDlgProc(hwnd,WM_SETICON,MPFROMLONG(hptrIcon),MPVOID);
108 {
109 static CHAR *names[] = {"Max. Path Length", /* 1 */
110 "Max. Text Sessions", /* 2 */
111 "Max. PM Sessions", /* 3 */
112 "Max. VDM Sessions", /* 4 */
113 "Boot Drive", /* 5 */
114 "Dynamic Priority", /* 6 */
115 "Max. Wait", /* 7 */
116 "Min. Timeslice", /* 8 */
117 "Max. Timeslice", /* 9 */
118 "Page Size", /* 10 */
119 "Version Major", /* 11 */
120 "Version Minor", /* 12 */
121 "Version Revision", /* 13 */
122 "Millisecs Up", /* 14 */
123 "Unixtime Low", /* 15 */
124 "Unixtime High", /* 16 */
125 "Physical Memory", /* 17 */
126 "Resident Memory", /* 18 */
127 "Total Available Memory", /* 19 */
128 "Max. Private Memory", /* 20 */
129 "Max. Shared Memory", /* 21 */
130 "Timer Interval", /* 22 */
131 "Max. Path Comp. Length", /* 23 */
132 "Foreground FS Session ID", /* 24 */
133 "Foreground Process PID", /* 25 */
134 NULL};
135 static CHAR *pnames[] = {"Swap button",
136 "Dblclk time",
137 "CX dblclk",
138 "CY dblclk",
139 "CX sizeborder",
140 "CY sizeborder",
141 "Alarm",
142 "",
143 "",
144 "Cursor rate",
145 "First scroll rate",
146 "Scroll rate",
147 "Numbered lists",
148 "Warning freq",
149 "Note freq",
150 "Error freq",
151 "Warning duration",
152 "Note duration",
153 "Error duration",
154 "",
155 "CX screen",
156 "CY screen",
157 "CX vscroll",
158 "CY hscroll",
159 "CY vscroll arrow",
160 "CX hscroll arrow",
161 "CX border",
162 "CY border",
163 "CX dlgframe",
164 "CY dlgframe",
165 "CY titlebar",
166 "CY vslider",
167 "CX hslider",
168 "CX minmaxbutton",
169 "CY minmaxbutton",
170 "CY menu",
171 "CX fullscreen",
172 "CY fullscreen",
173 "CX icon",
174 "CY icon",
175 "CX pointer",
176 "CY pointer",
177 "Debug",
178 "# Mouse buttons",
179 "Pointer level",
180 "Cursor level",
181 "Track rect level",
182 "# timers",
183 "Mouse present",
184 "CX bytealign",
185 "CY bytealign",
186 "",
187 "",
188 "",
189 "",
190 "",
191 "Not reserved",
192 "Extra key beep",
193 "Set lights",
194 "Insert mode",
195 "",
196 "",
197 "",
198 "",
199 "Menu rolldown delay",
200 "Menu rollup delay",
201 "Alt mnemonic",
202 "Tasklist mouse access",
203 "CX icon text width",
204 "# Icon text lines",
205 "Chord time",
206 "CX chord",
207 "CY chord",
208 "CX motion",
209 "CY motion",
210 "Begin drag",
211 "End drag",
212 "Single select",
213 "Open",
214 "Context menu",
215 "Context help",
216 "Text edit",
217 "Begin select",
218 "End select",
219 "Begin drag kb",
220 "End drag kb",
221 "Select kb",
222 "Open kb",
223 "Context menu kb",
224 "Context help kb",
225 "Text edit kb",
226 "Begin select kb",
227 "End select kb",
228 "Animation",
229 "Animation speed",
230 "Mono icons",
231 "Kbd id",
232 "Print screen",
233 NULL};
234 static CHAR *dnames[] = {"# printers",
235 "# RS232 ports",
236 "# diskette drives",
237 "Coprocessor present",
238 "PC submodel",
239 "PC model",
240 "Display",
241 NULL};
242 ULONG vals[26],val,x;
243 CHAR s[134],dev;
244
245 if(DosQuerySysInfo(QSV_MAX_PATH_LENGTH,QSV_MAX_COMP_LENGTH + 2L,
246 (PVOID)vals,(ULONG)sizeof(vals))) {
247 WinDismissDlg(hwnd,0);
248 break;
249 }
250 me = hwnd;
251 WinSendDlgItemMsg(hwnd,SYS_LISTBOX,LM_INSERTITEM,
252 MPFROMLONG(LIT_END),
253 MPFROMP(" -= Base OS Info =-"));
254 for(x = 0;names[x];x++) {
255 switch(x) {
256 case 0:
257 case 9:
258 case 22:
259 sprintf(s,"%-28.28s%lu bytes",names[x],vals[x]);
260 break;
261 case 16:
262 case 17:
263 case 18:
264 case 19:
265 case 20:
266 sprintf(s,"%-28.28s%lu bytes (%lu mb)",names[x],vals[x],
267 vals[x] / (1024 * 1024));
268 break;
269 case 4:
270 sprintf(s,"%-28.28s%c:",names[x],(CHAR)vals[x] + '@');
271 break;
272 case 5:
273 sprintf(s,"%-28.28s%s",names[x],(vals[x]) ? "On" : "Off");
274 break;
275 case 6:
276 sprintf(s,"%-28.28s%lu seconds",names[x],vals[x]);
277 break;
278 case 7:
279 case 8:
280 sprintf(s,"%-28.28s%lu milliseconds",names[x],vals[x]);
281 break;
282 case 13:
283 {
284 ULONG numdays,nummins;
285
286 sprintf(s,"%-28.28s%lu (",names[x],vals[x]);
287 vals[x] /= 60000L;
288 numdays = vals[x] / (60L * 24L);
289 if(numdays)
290 sprintf(s + strlen(s),"%lu day%s, ",numdays,&"s"[numdays == 1L]);
291 nummins = vals[x] % (60L * 24L);
292 sprintf(s + strlen(s),"%luh:%02lum)",nummins / 60,nummins % 60);
293 }
294 break;
295 case 21:
296 sprintf(s,"%-28.28s%lu.%01lu milliseconds",names[x],
297 vals[x] / 10,vals[x] % 10);
298 break;
299 default:
300 sprintf(s,"%-28.28s%lu",names[x],vals[x]);
301 break;
302 }
303 if(*s)
304 WinSendDlgItemMsg(hwnd,SYS_LISTBOX,LM_INSERTITEM,
305 MPFROMLONG(LIT_END),MPFROMP(s));
306 }
307 WinSendDlgItemMsg(hwnd,SYS_LISTBOX,LM_INSERTITEM,
308 MPFROMLONG(LIT_END),
309 MPFROMP(" -= PM Info =-"));
310 for(x = 0;pnames[x];x++) {
311 if(*pnames[x]) {
312 val = WinQuerySysValue(HWND_DESKTOP,x);
313 switch(x) {
314 case SV_CXBYTEALIGN:
315 case SV_CYBYTEALIGN:
316 case SV_CYMOTION:
317 case SV_CXMOTION:
318 case SV_CYDBLCLK:
319 case SV_CXDBLCLK:
320 case SV_CYPOINTER:
321 case SV_CXPOINTER:
322 case SV_CYICON:
323 case SV_CXICON:
324 case SV_CXFULLSCREEN:
325 case SV_CYFULLSCREEN:
326 case SV_CYMENU:
327 case SV_CYMINMAXBUTTON:
328 case SV_CXMINMAXBUTTON:
329 case SV_CXHSLIDER:
330 case SV_CYVSLIDER:
331 case SV_CXDLGFRAME:
332 case SV_CYDLGFRAME:
333 case SV_CXSIZEBORDER:
334 case SV_CYSIZEBORDER:
335 case SV_CXBORDER:
336 case SV_CYBORDER:
337 case SV_CYTITLEBAR:
338 case SV_CXHSCROLLARROW:
339 case SV_CYVSCROLLARROW:
340 case SV_CXVSCROLL:
341 case SV_CYHSCROLL:
342 case SV_CYSCREEN:
343 case SV_CXSCREEN:
344 case SV_CXICONTEXTWIDTH:
345 case SV_CXCHORD:
346 case SV_CYCHORD:
347 sprintf(s,"%-28.28s%lu pels",pnames[x],val);
348 break;
349 case SV_CONTEXTMENU:
350 case SV_OPEN:
351 case SV_TEXTEDIT:
352 case SV_BEGINSELECT:
353 case SV_ENDSELECT:
354 case SV_BEGINDRAG:
355 case SV_ENDDRAG:
356 case SV_CONTEXTHELP:
357 case SV_SINGLESELECT:
358 sprintf(s,"%-28.28sWM: %04xh KC: %04xh",pnames[x],
359 LOUSHORT(val),HIUSHORT(val));
360 break;
361 case SV_TASKLISTMOUSEACCESS:
362 sprintf(s,"%-28.28sWM: %04xh",pnames[x],LOUSHORT(val));
363 break;
364 case SV_CONTEXTMENUKB:
365 case SV_TEXTEDITKB:
366 case SV_BEGINDRAGKB:
367 case SV_ENDDRAGKB:
368 case SV_SELECTKB:
369 case SV_OPENKB:
370 case SV_CONTEXTHELPKB:
371 case SV_BEGINSELECTKB:
372 case SV_ENDSELECTKB:
373 sprintf(s,"%-28.28sVK: %04xh KC: %04xh",pnames[x],
374 LOUSHORT(val),HIUSHORT(val));
375 break;
376 case SV_CHORDTIME:
377 case SV_DBLCLKTIME:
378 case SV_CURSORRATE:
379 case SV_FIRSTSCROLLRATE:
380 case SV_SCROLLRATE:
381 case SV_MENUROLLDOWNDELAY:
382 case SV_MENUROLLUPDELAY:
383 case SV_ANIMATIONSPEED:
384 case SV_WARNINGDURATION:
385 case SV_NOTEDURATION:
386 case SV_ERRORDURATION:
387 sprintf(s,"%-28.28s%lu milliseconds",pnames[x],val);
388 break;
389 case SV_MOUSEPRESENT:
390 sprintf(s,"%-28.28s%s",pnames[x],(val) ? "True" : "False");
391 break;
392 case SV_ALARM:
393 case SV_ANIMATION:
394 case SV_MONOICONS:
395 case SV_PRINTSCREEN:
396 case SV_SETLIGHTS:
397 case SV_INSERTMODE:
398 case SV_SWAPBUTTON:
399 case SV_DEBUG:
400 sprintf(s,"%-28.28s%s",pnames[x],(val) ? "On" : "Off");
401 break;
402 default:
403 sprintf(s,"%-28.28s%lu",pnames[x],val);
404 break;
405 }
406 WinSendDlgItemMsg(hwnd,SYS_LISTBOX,LM_INSERTITEM,
407 MPFROMLONG(LIT_END),MPFROMP(s));
408 }
409 }
410 WinSendDlgItemMsg(hwnd,SYS_LISTBOX,LM_INSERTITEM,
411 MPFROMLONG(LIT_END),
412 MPFROMP(" -= Hardware info =-"));
413 for(x = 0;dnames[x];x++) {
414 if(*dnames[x]) {
415 if(!DosDevConfig(&dev,x)) {
416 switch(x) {
417 case DEVINFO_COPROCESSOR:
418 sprintf(s,"%-28.28s%s",dnames[x],(dev) ? "True" : "False");
419 break;
420 case DEVINFO_ADAPTER:
421 sprintf(s,"%-28.28s%sMonochrome or printer",dnames[x],
422 (dev) ? "Not " : NullStr);
423 break;
424 default:
425 sprintf(s,"%-28.28s%lu",dnames[x],dev);
426 break;
427 }
428 }
429 WinSendDlgItemMsg(hwnd,SYS_LISTBOX,LM_INSERTITEM,
430 MPFROMLONG(LIT_END),MPFROMP(s));
431 }
432 }
433 }
434 _beginthread(RunRmview,NULL,65536,(PVOID)hwnd);
435 break;
436
437 case WM_ADJUSTWINDOWPOS:
438 PostMsg(hwnd,UM_STRETCH,MPVOID,MPVOID);
439 break;
440
441 case UM_STRETCH:
442 {
443 SWP swpC,swp;
444
445 WinQueryWindowPos(hwnd,&swp);
446 if(!(swp.fl & (SWP_HIDE | SWP_MINIMIZE))) {
447 WinQueryWindowPos(WinWindowFromID(hwnd,SYS_LISTBOX),&swpC);
448 if(!ypos)
449 ypos = swpC.y;
450 WinSetWindowPos(WinWindowFromID(hwnd,SYS_LISTBOX),HWND_TOP,
451 SysVal(SV_CXSIZEBORDER),
452 ypos,
453 swp.cx - (SysVal(SV_CXSIZEBORDER) * 2),
454 (swp.cy - ypos) - (SysVal(SV_CYTITLEBAR) +
455 SysVal(SV_CYSIZEBORDER)),
456 SWP_MOVE | SWP_SIZE);
457 }
458 }
459 return 0;
460
461 case WM_COMMAND:
462 WinDismissDlg(hwnd,0);
463 return 0;
464
465 case WM_DESTROY:
466 if(me == hwnd) {
467 me = (HWND)0;
468 if(hptrIcon)
469 WinDestroyPointer(hptrIcon);
470 hptrIcon = (HPOINTER)0;
471 }
472 break;
473 }
474
475#endif
476
477 return WinDefDlgProc(hwnd,msg,mp1,mp2);
478}
479
Note: See TracBrowser for help on using the repository browser.