⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osinfo.c

📁 Dos6.0
💻 C
📖 第 1 页 / 共 3 页
字号:

    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 + -