📄 osinfo.c
字号:
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_VERSION],
wAlignColumn);
if (pOsVer->fOs2Installed)
Qstrcat (pqszStrings[i], pszOs2);
else
Qstrcat (pqszStrings[i], pszMsDos);
sprintf (chBuffer, " %d.%02d", pOsVer->wDosMajor, pOsVer->wDosMinor);
Qstrcat (pqszStrings[i], chBuffer);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
{
/* Internal Revision */
if (pOsVer->fOs2Installed == FALSE && pOsVer->wDosMajor >= 5)
{
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_INTERNAL_REV],
wAlignColumn);
sprintf (chBuffer, "%02d", pOsVer->wDosRevision);
Qstrcat (pqszStrings[i], chBuffer);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* OEM Serial Number */
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_OEM_SERIAL],
wAlignColumn);
sprintf (chBuffer, "%02XH", pOsVer->wOemSerialNumber);
Qstrcat (pqszStrings[i], chBuffer);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
{
/* User Serial Number */
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_USER_SERIAL],
wAlignColumn);
sprintf (chBuffer, "%06XH", pOsVer->dwUserSerialNumber);
Qstrcat (pqszStrings[i], chBuffer);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
{
/* OEM Version String */
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_OEM_VERSION],
wAlignColumn);
Qstrcat (pqszStrings[i], pOsVer->szOemVer[0]);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
/* Add the extra two strings, if they exist */
for (u = 1; u < MAX_OEM_VER_STRINGS && pOsVer->szOemVer[u][0] != '\0'; ++u)
{
/* Add the string */
QstrcpyAlign (pqszStrings[i], "", wAlignColumn);
Qstrcat (pqszStrings[i], pOsVer->szOemVer[u]);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* DOS Location */
if (pOsVer->fOs2Installed == FALSE && pOsVer->wDosMajor >= 5)
{
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_DOS_LOCATION],
wAlignColumn);
if (pOsVer->wDosLoadedFlags & 0x08)
Qstrcat (pqszStrings[i], pszRom);
if (pOsVer->wDosLoadedFlags & 0x10)
Qstrcat (pqszStrings[i], pszHma);
if (pOsVer->wDosLoadedFlags == 0)
Qstrcat (pqszStrings[i], pszConventional);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* DOS Boot Drive */
if (pOsVer->fOs2Installed == FALSE && pOsVer->wDosMajor >= 4)
{
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_BOOT_DRIVE],
wAlignColumn);
chBuffer[0] = pOsVer->chDosBootDrive;
chBuffer[1] = ':';
chBuffer[2] = '\0';
Qstrcat (pqszStrings[i], chBuffer);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* DOSSHELL Task Switcher */
if (pOsVer->fDosShellTaskSwitcher)
{
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_DOSSHELL],
wAlignColumn);
Qstrcat (pqszStrings[i], pszActive);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* Windows */
if (pOsVer->wWindowsType != NO_WINDOWS)
{
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_WINDOWS],
wAlignColumn);
switch (pOsVer->wWindowsType)
{
case WIN_286:
Qstrcat (pqszStrings[i], pszWin286);
Qstrcat (pqszStrings[i], psz_2dotX);
break;
case WIN_386:
Qstrcat (pqszStrings[i], pszWin386);
Qstrcat (pqszStrings[i], psz_2dotX);
break;
default:
Qstrcat (pqszStrings[i], pszWindows);
sprintf (chBuffer, " %d", pOsVer->wWindowsMajor);
Qstrcat (pqszStrings[i], chBuffer);
if (pOsVer->wWindowsMinor == 0xFF)
Qstrcat (pqszStrings[i], ".x ");
else
{
sprintf (chBuffer, ".%02d ", pOsVer->wWindowsMinor);
Qstrcat (pqszStrings[i], chBuffer);
}
switch (pOsVer->wWindowsType)
{
case WIN_REAL_MODE:
Qstrcat (pqszStrings[i], pszRealMode);
break;
case WIN_STANDARD_MODE:
Qstrcat (pqszStrings[i], pszStandardMode);
break;
case WIN_ENHANCED_MODE:
Qstrcat (pqszStrings[i], pszEnhancedMode);
break;
}
}
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* DESQview Version */
if (pOsVer->wDesqViewMajor != 0 || pOsVer->wDesqViewMinor != 0)
{
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_DESQVIEW],
wAlignColumn);
sprintf (chBuffer, "%d.%02d", pOsVer->wDesqViewMajor,
pOsVer->wDesqViewMinor);
Qstrcat (pqszStrings[i], chBuffer);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* 3270 Program Information */
if (pOsVer->w3270Installed)
{
strcpy (chBuffer, paszOsVersionTitles[OS_3270]);
if (pOsVer->w3270Installed == _3270_PC_CONTROL_PROGRAM)
Qstrcat (chBuffer, pszPCControlProgram);
else
Qstrcat (chBuffer, pszWorkstationProgram);
QstrcpyAlign (pqszStrings[i], chBuffer, wAlignColumn);
sprintf (chBuffer, "%d.%02d", pOsVer->w3270Major,
pOsVer->w3270Minor);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* DoubleDOS Installed */
if (pOsVer->fDoubleDosInstalled)
{
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_DOUBLE_DOS],
wAlignColumn);
Qstrcat (pqszStrings[i], pszYes);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* TaskView Installed */
if (pOsVer->fTaskViewInstalled)
{
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_TASKVIEW],
wAlignColumn);
Qstrcat (pqszStrings[i], pszYes);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* TopView Version */
if (pOsVer->wTopViewMajor != 0 || pOsVer->wTopViewMinor != 0)
{
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_TOPVIEW],
wAlignColumn);
sprintf (chBuffer, "%d.%02d", pOsVer->wTopViewMajor,
pOsVer->wTopViewMinor);
Qstrcat (pqszStrings[i], chBuffer);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
{
/* Fully Qualified Path to Program */
QstrcpyAlign (pqszStrings[i], paszOsVersionTitles[OS_PATH_TO_PROGRAM],
wAlignColumn);
Qstrcat (pqszStrings[i], pOsVer->szPathToProgram);
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
{
/* Add the environment strings */
PSZ pszString; /* Single String pointer */
WORD u; /* Looping variable */
/* Add the "Environment Strings" string */
pqszStrings[i][0] = '\0';
PrepNextString (pqszStrings, i++);
wLength = (wMaxLength / 2) - (strlen (pszEnvironmentStr) / 2);
Qmemset (pqszStrings[i], ' ', wLength);
pqszStrings[i][wLength] = '\0';
Qstrcat (pqszStrings[i], pszEnvironmentStr);
PrepNextString (pqszStrings, i++);
/* And underline */
Qmemset (pqszStrings[i], '-', wMaxLength);
pqszStrings[i][wMaxLength] = '\0';
PrepNextString (pqszStrings, i++);
for (u = 0; environ[u][0] != '\0'; ++u)
{
pszString = environ[u];
Qstrcpy (pqszStrings[i], pszString);
/* Wrap the string into pqszStrings */
while (strlen (pszString) > 72)
{
pszString = &pszString[72];
pqszStrings[i][72] = '\0';
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
/* Set the next pointer */
PrepNextString (pqszStrings, i++);
}
}
/* Set the last pointer to NULL */
pqszStrings[i] = NULL;
/* Return the pointer to pqszStrings */
return (pqszStrings);
}
VOID OsErr (VOID)
{
#if 0
CHAR chBuffer[256];
WORD * pw = (WORD *) minParsedLine;
INT c = 0;
sprintf (chBuffer, pszUnexplainedError, pw[-1] % 10000);
puts (chBuffer);
if (rgfReportItemFlag[IDI_CUSTOMER_INFORMATION] == FALSE)
{
WORD FAR *fpWord = (WORD FAR *) 0x0040006C;
WORD wPause = (*fpWord) + 37;
while (*fpWord < wPause)
;
}
else
{
puts ("Press ENTER to exit or C to continue ...");
while ((c = getch()) != '\r' && c != 'C' && c != 'c')
if (c == 0)
getch();
}
if (c == '\r')
exit (1);
#endif
}
/*********************************************************************
* WinVerDetect - Detects type/mode of windows, and windows version.
* Also detects the DOSSHELL Task Switcher.
*
* pwWindowsType - Type or mode of windows (/286, /386, enhanced,
* standard, real, or none)
* pwWindowsMajor - Major part of Windows version number.
* pwWindowsMinor - Minor part of Windows version number.
* pfDosShell - TRUE if DOSSHELL task switcher is running.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -