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

📄 dtwinver.htm

📁 检测机器操作系统的版本
💻 HTM
字号:
<html>

<head>
<title>DtWinVer</title>
</head>

<body bgcolor="#FFFFFF">

<p align="left"><img src="dtwinver.gif" width="67" height="58"
alt="dtwinver.gif (7742 bytes)"><font face="Arial"><big><big><big><big><strong>DtWinVer</strong></big></big></big></big></font></p>

<p>&nbsp;</p>

<table>
<TBODY>
  <tr>
    <td><a href="#Features"><font face="Arial">Features</font></a></td>
  </tr>
  <tr>
    <td><a href="#History"><font face="Arial">History</font></a></td>
  </tr>
  <tr>
    <td><a href="#API"><font face="Arial">API Reference</font></a></td>
  </tr>
  <tr>
    <td><a href="#Notes"><font face="Arial">Notes</font></a></td>
  </tr>
  <tr>
    <td><a href="#Contact"><font face="Arial">Contacting the Author</font></a></td>
  </tr>
</TBODY>
</table>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="Features"></a><big><font face="Arial"><big><big><strong>Features</strong></big></big></font></big></p>

<p><font face="Arial" COLOR="#000000" size="3">Enclosed is a routine which provides a
comprehensive method to determine which OS the program that calls it is running on. All
methods it uses are fully documented on various articles on the MSDN CD. The routine
provides the emulated OS aswell as the underlying OS. e.g to a Dos program Windows 95
looks like MS-DOS 7.0. A full list of the OS&#146;s it can detect are:</font> 

<ul>
  <li><font face="Arial" COLOR="#000000" size="3">Win32s</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Windows 95 </font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Windows 98</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">NT Workstation 3.1 and later</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">NT Server 3.1 and later</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Windows for Workgroups</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Windows 3.0 - 3.11</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Dos</font></li>
</ul>

<p><font face="Arial" COLOR="#000000" size="3">Some of the possible scenarios it can
report on are:</font> 

<ul>
  <li><font face="Arial" COLOR="#000000" size="3">&quot;You are running an emulated Dos v5.50
    On NT&quot;</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">&quot;You are running an emulated Windows
    3.95 on Windows 95 v4.0 Build 950&quot;</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">&quot;You are running Windows for Workgroups
    on Dos v6.22&quot;</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">&quot;You are running NT Server v3.51&quot;</font></li>
</ul>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="History"></a><font color="#000000" size="5" face="Arial"><strong>History</strong></font></p>

<p><strong><font face="Arial" COLOR="#000000" size="3">8 May 1997: </font></strong>

<ul>
  <li><font face="Arial" COLOR="#000000" size="3">Fix to remove unicode and tchar code when
    being compiled for Win16.</font></li>
</ul>

<p><strong><font face="Arial" COLOR="#000000" size="3">13 September 1998</font></strong> 

<ul>
  <li><font face="Arial" COLOR="#000000" size="3">Updated the sample app plus the dtwinver
    code to explicitly support Windows 98.</font></li>
</ul>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="API"></a><font color="#000000" size="5" face="Arial"><strong>API</strong></font></p>

<p>&nbsp;</p>

<p><strong><font face="Arial" COLOR="#000000" size="3"><a href="#GetOSVersion">GetOSVersion</a><br>
</font><font face="Arial"><a href="#IsUnderlyingWindows95">IsUnderlyingWindows95</a><small><br>
</small><a href="#IsUnderlyingWindows98">IsUnderlyingWindows98</a></font></strong></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="GetOSVersion"></a><font face="Arial" color="#000000" size="4"><strong>GetOSVersion</strong></font></p>

<p><font face="Arial" COLOR="#000000" size="3"><strong>BOOL GetOSVersion(LPOS_VERSION_INFO
</strong><em>lpVersionInformation</em><strong>)</strong></font></p>

<p><font face="Arial" COLOR="#000000" size="3"><strong>Parameters</strong></font></p>

<p><font face="Arial" COLOR="#000000" size="3"><em>lpVersionInformation</em> A pointer to
a structure of the following form:</font> 

<dl>
  <dd><font COLOR="#000000" size="3">typedef struct _OS_VERSION_INFO</font></dd>
  <dd><font COLOR="#000000" size="3">{</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwOSVersionInfoSize;</font></dd>
  <dd>&nbsp;</dd>
  <dd><font COLOR="#000000" size="3">//What version of OS is being emulated</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwEmulatedMajorVersion;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwEmulatedMinorVersion;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwEmulatedBuildNumber;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwEmulatedPlatformId;</font></dd>
  <dd><font COLOR="#000000" size="3">#ifdef _WIN32 </font></dd>
  <dd><font COLOR="#000000" size="3">TCHAR szEmulatedCSDVersion[128];</font></dd>
  <dd><font COLOR="#000000" size="3">#else </font></dd>
  <dd><font COLOR="#000000" size="3">char szEmulatedCSDVersion[128];</font></dd>
  <dd><font COLOR="#000000" size="3">#endif </font></dd>
  <dd><font COLOR="#000000" size="3">//What version of OS is really running </font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwUnderlyingMajorVersion;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwUnderlyingMinorVersion;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwUnderlyingBuildNumber;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwUnderlyingPlatformId; </font></dd>
  <dd><font COLOR="#000000" size="3">#ifdef _WIN32 </font></dd>
  <dd><font COLOR="#000000" size="3">TCHAR szUnderlyingCSDVersion[128];</font></dd>
  <dd><font COLOR="#000000" size="3">#else </font></dd>
  <dd><font COLOR="#000000" size="3">char szUnderlyingCSDVersion[128];</font></dd>
  <dd><font COLOR="#000000" size="3">#endif </font></dd>
  <dd><font COLOR="#000000" size="3">} OS_VERSION_INFO, *POS_VERSION_INFO, FAR
    *LPOS_VERSION_INFO;</font></dd>
</dl>

<p><font face="Arial" COLOR="#000000" size="3">This will be filled in upon a successful
return from the function.</font></p>

<p><font face="Arial" COLOR="#000000" size="3"><strong>Return Value</strong></font></p>

<p><font face="Arial" COLOR="#000000" size="3">TRUE if the function was successful
otherwise FALSE.</font></p>

<p>&nbsp;</p>

<p><a name="IsUnderlyingWindows95"></a><big><strong><font face="Arial">IsUnderlyingWindows95</font></strong></big></p>

<p><font face="Arial"><strong>BOOL IsUnderlyingWindows95(LPOS_VERSION_INFO </strong><em>lpVersionInformation</em><strong>);</strong></font></p>

<p><font face="Arial" color="#000000" size="3"><strong>Remarks</strong></font></p>

<p><font face="Arial" color="#000000" size="3">TRUE if the structure sent in represents
Windows 95 otherwise FALSE. See the code in test.cpp for its usage.</font></p>

<p>&nbsp;</p>

<p><a name="IsUnderlyingWindows98"></a><big><strong><font face="Arial">IsUnderlyingWindows98</font></strong></big></p>

<p><font face="Arial"><strong>BOOL IsUnderlyingWindows98(LPOS_VERSION_INFO </strong><em>lpVersionInformation</em><strong>);</strong></font></p>

<p><font face="Arial" color="#000000" size="3"><strong>Remarks</strong></font></p>

<p><font face="Arial" color="#000000" size="3">TRUE if the structure sent in represents
Windows 98 otherwise FALSE. See the code in test.cpp for its usage.</font></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="Notes"></a><font face="Arial" color="#000000" size="5"><strong>Notes</strong></font></p>

<p><font face="Arial" color="#000000" size="3">The code uses some C++&#146;isms and uses
MFC header files. If you want, it would be a very simple matter of commenting a few lines
here and there to get it to work on any standard &quot;C&quot; compiler on any PC OS. 3
mak files are also included which builds a simple application which reports the OS
version, through a message box on Windows and stdio in Dos.</font></p>

<p><font face="Arial" color="#000000" size="3">The mak files are:</font> 

<ul>
  <li><font face="Arial" color="#000000" size="3">dosver.mak (VC 1.5x Dos)</font></li>
  <li><font face="Arial" color="#000000" size="3">winver.mak (VC 1.5x Win16)</font></li>
  <li><font face="Arial" color="#000000" size="3">winver32.mak (VC 4.x Win32).</font></li>
</ul>

<p><font face="Arial" color="#000000" size="3">Areas where the code may prove useful are:</font>

<ul>
  <li><font face="Arial" color="#000000" size="3">A Dos program wants to know if it can be
    allowed access to hardware ports which is not available on NT, but is available on Dos,
    Windows 3.x &amp; Windows 95.</font></li>
  <li><font face="Arial" color="#000000" size="3">A Win32 program wants to know if the Windows
    95 UI is available.</font></li>
  <li><font face="Arial" color="#000000" size="3">A Win16 program wants to know if it can call
    the Win32 API via generic thunking.&nbsp;</font></li>
</ul>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="Contact"></a><font color="#000000" size="4" face="Arial"><strong>CONTACTING
THE AUTHOR</strong></font></p>

<p><font face="Arial" color="#000000" size="3">PJ Naughter<br>
Email: </font><font face="Arial" color="#000000" size="3"><a href="mailto:pjn@indigo..ie">pjn@indigo.ie</a><br>
Web: </font><font face="Arial" color="#000000" size="3"><a href="http://indigo.ie/~pjn">http://indigo.ie/~pjn</a><br>
13th September 1998</font></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -