_GetSystemInfo関数(extern int _GetSystemInfo(int *DxLibVer , int *DirectXVer , int *WindowsVer ) ; // DXライブラリと DirectX のバージョンと Windows のバージョンを得る)
というのを使用し、Windowsのバージョンを得ようとしたのですが、「265」と返ってきます。これは正しい値なのかちょっと分からないのでトピックを立てました。
変数の型はintですが違うのでしょうか?また書式は%dですがあっていますか?int型なので当たり前ですが%sにするとフリーズしちゃいました…。
この関数をネットで調べようとしましたが詳しい情報はありませんでした。また自分のPCのWinodwsのバージョンは6.1らしいです。
ちなみにDirectXのバージョンは「458752」というアップデートしすぎのあり得ない値が返ってきました。
Windowsバージョン取得について
Re: Windowsバージョン取得について
ソースコードを貼ってください
Re: Windowsバージョン取得について
int WindowVer(int WindowVer_x,int WindowVer_y,int DirectVer_x,int DirectVer_y)
{//バージョン
static int Swh_WindowVer = 0;
static int WindowVer=0,DirectVer=0,DxLibVer=0; //それぞれのバージョンを入れる変数
switch(Swh_WindowVer){
case 0: //バージョン取得
if(!_GetSystemInfo(&DxLibVer,&DirectVer,&WindowVer)) //戻り値不明…
Swh_WindowVer = 1; //取得完了
else Swh_WindowVer = 2; //エラー
break;
case 1: //取得出来た場合
DrawFormatStringToHandle(WindowVer_x,WindowVer_y,GetColor(255,255,255),FontHandle,"Windows Version:%d",WindowVer);
DrawFormatStringToHandle(DirectVer_x,DirectVer_y,GetColor(255,255,255),FontHandle,"DirectX Version:%d",DirectVer);
break;
case 2: //エラーが起きた場合
DrawFormatStringToHandle(WindowVer_x,WindowVer_y,GetColor(255,255,255),FontHandle,"Windows Version:不明");
DrawFormatStringToHandle(DirectVer_x,DirectVer_y,GetColor(255,255,255),FontHandle,"DirectX Version:不明");
break;
}
return 0;
}
Dango San
Re: Windowsバージョン取得について
DxLib.hにこんな定義があります。
バージョンの数字を16進数(%x)で表示してみると分かると思います。
バージョンの数字を16進数(%x)で表示してみると分かると思います。
// WINDOWSのバージョンマクロ
#define DX_WINDOWSVERSION_31 (0x000)
#define DX_WINDOWSVERSION_95 (0x001)
#define DX_WINDOWSVERSION_98 (0x002)
#define DX_WINDOWSVERSION_ME (0x003)
#define DX_WINDOWSVERSION_NT31 (0x104)
#define DX_WINDOWSVERSION_NT40 (0x105)
#define DX_WINDOWSVERSION_2000 (0x106)
#define DX_WINDOWSVERSION_XP (0x107)
#define DX_WINDOWSVERSION_VISTA (0x108)
#define DX_WINDOWSVERSION_7 (0x109)
#define DX_WINDOWSVERSION_NT_TYPE (0x100)
// DirectXのバージョンマクロ
#define DX_DIRECTXVERSION_NON (0)
#define DX_DIRECTXVERSION_1 (0x10000)
#define DX_DIRECTXVERSION_2 (0x20000)
#define DX_DIRECTXVERSION_3 (0x30000)
#define DX_DIRECTXVERSION_4 (0x40000)
#define DX_DIRECTXVERSION_5 (0x50000)
#define DX_DIRECTXVERSION_6 (0x60000)
#define DX_DIRECTXVERSION_6_1 (0x60100)
#define DX_DIRECTXVERSION_7 (0x70000)
#define DX_DIRECTXVERSION_8 (0x80000)
#define DX_DIRECTXVERSION_8_1 (0x80100)
Re: Windowsバージョン取得について
返信ありがとうございます。
%xで表示させたところ、Windowsバージョンでは「109」、DirectXのバージョンでは「70000」と出ました。
マクロを見て気付いたのですが、DirectXのバージョンは8.1までしか定義されていませんね。自分のPCはDirectXのバージョンは11です。
%xで表示させたところ、Windowsバージョンでは「109」、DirectXのバージョンでは「70000」と出ました。
マクロを見て気付いたのですが、DirectXのバージョンは8.1までしか定義されていませんね。自分のPCはDirectXのバージョンは11です。
Dango San
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: Windowsバージョン取得について
WindowsAPIをつかっては?
「GetVersionEx 関数」
http://msdn.microsoft.com/ja-jp/library/cc429835.aspx
「Windowsのバージョンの取得」
http://www.westbrook.jp/Tips/Win/OSVersion.html
「OSのバージョンを取得するには GetVersionEx() - メモブロ」
http://d.hatena.ne.jp/shikaku/20110729/p2
「GetVersionEx 関数」
http://msdn.microsoft.com/ja-jp/library/cc429835.aspx
「Windowsのバージョンの取得」
http://www.westbrook.jp/Tips/Win/OSVersion.html
「OSのバージョンを取得するには GetVersionEx() - メモブロ」
http://d.hatena.ne.jp/shikaku/20110729/p2
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Windowsバージョン取得について
えっと、、、だんごさん さんが書きました:なんか自分で話を切り上げた感じになっちゃいましたが、この109という戻り値をどうバージョン情報として表示させれば良いのでしょうか?
自分で表示すればいいんでない?
(^_^;
char sz[256] = {0}; // サイズは適当
switch (WindowVer) {
case DX_WINDOWSVERSION_31: strcpy(sz, "WINDOWSVERSION_31"); break;
case DX_WINDOWSVERSION_95: strcpy(sz, "WINDOWSVERSION_95"); break;
case DX_WINDOWSVERSION_98: strcpy(sz, "WINDOWSVERSION_98"); break;
case DX_WINDOWSVERSION_ME: strcpy(sz, "WINDOWSVERSION_ME"); break;
case DX_WINDOWSVERSION_NT31: strcpy(sz, "WINDOWSVERSION_NT31"); break;
case DX_WINDOWSVERSION_NT40: strcpy(sz, "WINDOWSVERSION_NT40"); break;
case DX_WINDOWSVERSION_2000: strcpy(sz, "WINDOWSVERSION_2000"); break;
case DX_WINDOWSVERSION_XP: strcpy(sz, "WINDOWSVERSION_XP"); break;
case DX_WINDOWSVERSION_VISTA: strcpy(sz, "WINDOWSVERSION_VISTA"); break;
case DX_WINDOWSVERSION_7: strcpy(sz, "WINDOWSVERSION_7"); break;
default:
if ( WindowVer & DX_WINDOWSVERSION_NT_TYPE )
strcpy(sz, "WINDOWSVERSION_NT_TYPE");
else
strcpy(sz, "UNKNOWN"); break;
}
DrawFormatStringToHandle(WindowVer_x,WindowVer_y,GetColor(255,255,255),FontHandle,"Windows Version:%s", sz);
written by へにっくす
Re: Windowsバージョン取得について
そろそろ私も思ってました・・・。softya(ソフト屋) さんが書きました:WindowsAPIをつかっては?
やはり自分でソース書くしかないんですね・・・。へにっくす さんが書きました:えっと、、、自分で表示すればいいんでない?(^_^;
DxLibではDirectXやWindowsのバージョンのマクロ定義も限界あるのでWinAPIで直接受け取る方がよさそうですね。
ありがとうございました。
Dango San