如何决定Windows的版本
Windows具有多个版本,一个应用程序或者具有运行在多个Windows版本下的灵活性,或者通过条件编译指令,编译成只能在一个操作平台下工作。
下面介绍一种方法,可以使应用程序能动态地决定Windows操作系统的版本。应用程序通过调用Windows API函数GetVersionEx可以获得Windows的版本信息,该函数使用一个TOSVersionInfo类的变参,所有Windows版本信息就包含在其中,其结构如下:
typedef struct _OSVERSIONINFO{
DWORD dwOSVersionInfoSize; //结构的大小
DWORD dwMajorVersion; //主版本
DWORD dwMinorVersion; //副版本
DWORD dwBuildNumber; //建立版本
DWORD dwPlatformId; //操作平台标识
TCHAR szCSDVersion[ 128 ]; //版本标识字符串 } OSVERSIONINFO;
下面是使用该函数的一个例子:
procedure TForm1.Button1Click(Sender: TObject);
var VersionInfo: TOSVersionInfo;
begin
VersionInfo.dwOSVersionInfoSize := Sizeof(TOSVersionInfo);
GetVersionEx(VersionInfo);
case VersionInfo.dwPlatformID of
VER_PLATFORM_WIN32S: Do_SomeThing;
VER_PLATFORM_WIN32_WINDOWS: Do_SomeOtherThing;
VER_PLATFORM_WIN32_NT: Do_SomeThingElse;
end;
end;
内存知多少?
下面介绍一种方法可以决定系统内存的多少、使用状态等信息。更重要的是,应用程序可以利用这项技术来决定客户机的可用内存的大小,利用这些信息,应用程序可以动态地优化程序的性能。例如,如果有足够的内存可以利用双缓存优化位图的操作。
利用Windows API函数GlobalMemoryStatus可以完成上述功能。GlobalMemoryStatus接收一个类型为TMemoryStatus的变参,通过这个参数就可以获得Windows当前的内存状态。TMemoryStatus的结构如下:
typedef struct _MEMORYSTATUS { // mst
DWORD dwLength; // sizeof(MEMORYSTATUS),该记录结构的大小
DWORD dwMemoryLoad; // 使用内存所占百分比
DWORD dwTotalPhys; // 物理内存的字节数
DWORD dwAvailPhys; // 自由物理可用内存字节数
DWORD dwTotalPageFile; // 页文件字节数
DWORD dwAvailPageFile; // 页文件的自由字节数
DWORD dwTotalVirtual; // 地址空间的用户字节数
DWORD dwAvailVirtual; // 自由用户字