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