Program-05 Windowsが9x系かNT系かを判定する
Q 使っているWindowsが9x系かNT系かによって、プログラムを使えなくするとか、処理を分けるなどの処理を行いたいのですが、どうすればいいでしょうか?
A GetVersionEx関数を使います。
どう使う?
Dim udtOSVersion As OSVERSIONINFO
With udtOSVersion
.dwOSVersionInfoSize=Len(udtOSVersion)
GetVersionEx(udtOSVersion)
If .dwPlatformId=VER_PLATFORM_WIN32_WINDOWS Then
MsgBox NULL,"Win9x系です。"
Else
MsgBox NULL,"WinNT系です。"
End If
End With
やむを得ずWindows9x系では使えない機能を使う、などのときに使える検査方法です。
しかし、NT系のみにしか存在しないAPI関数を使っている場合、この方法を使っていてもプログラム起動時の段階でエラーが出て強制終了してしまいます。
関数ポインタからの実行であれば全く問題にはなりませんが、その「関数ポインタからの実行」が十分にサポートされていないのがActiveBasicのちょっとした難点かもしれません。
AB4で実装されました。If文で分岐して、それぞれ適切な関数をポインタから実行すればいいですね。
API関数のポインタはLoadLibraryやGetProcAddress関数で取得しましょう。