黒龍's Blog

明日から役立つ無駄知識をあなたに(仮)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  170  : 記事  0  : コメント  2719  : トラックバック  26

ニュース

わんくま同盟に参加させていただきました。
どうぞよろしくお願いします。

自己紹介

コミュニティ

  • わんくま同盟
    わんくま同盟

書庫

// GetOSVersion.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include "Windows.h"
#include 


#define PLATFORM_ID 0
#define MAJOR_VERSION 1
#define MINOR_VERSION 2
#define BUILD_NUMBER 3
#define HELP 4
#define SYNTAX_ERROR -1

int _tmain(int argc, _TCHAR* argv[])
{
 OSVERSIONINFOA OsVersionInfo;
 OsVersionInfo.dwOSVersionInfoSize = sizeof( OsVersionInfo );
 GetVersionExA( &OsVersionInfo );
 
 
 int resultType = SYNTAX_ERROR;
 if(*++argv != NULL)
 {
  if(**argv == '/')
  {
   std::string command = (*argv+1);
   if(command.compare(_T("Platform")) == 0)
   {
    resultType = PLATFORM_ID;
   }
   else if(command.compare(_T("Major")) == 0)
   {
    resultType = MAJOR_VERSION;
   }
   else if(command.compare(_T("Minor")) == 0)
   {
    resultType = MINOR_VERSION;
   }
   else if(command.compare(_T("Build")) == 0)
   {
    resultType = BUILD_NUMBER;
   }
   else if(command.compare(_T("?")) == 0)
   {
    resultType = HELP;
   }
  }
 }
 else
 {
  resultType = PLATFORM_ID;
 }

 int resultCode = 0;

 switch(resultType)
 {
 case HELP:
  std::cout 
   << "GetOsVersion : OSのバージョンを取得します。" << std::endl 
   << "/? : このメッセージの表示。" << std::endl
   << "/Platform : プラットフォームIDを取得。" << std::endl
   << "/Major : メジャーバージョンを取得。" << std::endl
   << "/Minor : マイナーバージョンを取得。" << std::endl
   << "/Build : ビルドナンバーを取得。" << std::endl;
  return 0;
 case PLATFORM_ID:
  resultCode = OsVersionInfo.dwPlatformId;
  break;
 case MAJOR_VERSION:
  resultCode = OsVersionInfo.dwMajorVersion;
  break;
 case MINOR_VERSION:
  resultCode = OsVersionInfo.dwMinorVersion;
  break;
 case BUILD_NUMBER:
  resultCode = OsVersionInfo.dwBuildNumber;
  break;
 default:
  std::cout 
   << "オプションが不正です。" << std::endl << std::endl
   << "GetOsVersion : OSのバージョンを取得します。" << std::endl 
   << "/? : このメッセージの表示。" << std::endl
   << "/Platform : プラットフォームIDを取得。" << std::endl
   << "/Major : メジャーバージョンを取得。" << std::endl
   << "/Minor : マイナーバージョンを取得。" << std::endl
   << "/Build : ビルドナンバーを取得。" << std::endl;
  return -1;
 }
 std::cout << "Platform is " 
  << (OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS ? "Windows" : "WinNT") 
  << ", MajorVersion = " << OsVersionInfo.dwMajorVersion 
  << ", MinorVersion = " << OsVersionInfo.dwMinorVersion
  << ", BuildNumber = " << OsVersionInfo.dwBuildNumber << std::endl;
 return resultCode;
}

投稿日時 : 2008年10月30日 16:46

コメント

# re: テスト投稿 2008/10/30 17:18 とっちゃん
構造体の文字列フィールド使ってないのでわざわざAで固定する必要はないと思うけど?


# re: テスト投稿 2008/10/30 17:34 黒龍
確かに。コマンドラインはAみたいな癖になっちゃってました。

# re: テスト投稿 2008/10/30 17:39 とっちゃん
cout 使うとねぇ。。。どうしても ANSI ベースになりがちw

おいらは、両方ビルド可能にしてる場合は、#ifdef つかって tcout とか作ってたりする。

setlocale やっときゃ問題ないし、環境依存度少ないから意外と行けるしねw


# re: テスト投稿 2008/10/30 17:42 とっちゃん
さらにどうでもいいことに気がついた。。。
#include <iostream> と小文字で書くのが一般的。。。な気がするw

まぁ、Winでやってる限りは大文字小文字は関係ないけどwww


# re: テスト投稿 2008/10/30 17:57 黒龍
>cout 使うとねぇ。。。どうしても ANSI ベースになりがちw

>おいらは、両方ビルド可能にしてる場合は、#ifdef つかって tcout とか作ってたりする。

>setlocale やっときゃ問題ないし、環境依存度少ないから意外と行けるしねw

なるほど両方いけるようにもありですね。こういうのちゃんと考えないとなぁ。

>#include <iostream> と小文字で書くのが一般的。。。な気がするw

うぁほんまやw
なんで大文字で書いたんだろう?

# ブランドスーパーコピーバッグ、財布、靴、時計 2016/02/16 10:35 n4wj3tk479
http://www.ooowatch.com/tokei/bvlgari
激安エルメス ケリー, エルメスN品 ボリード}}}}}}

Post Feedback

タイトル
名前
Url:
コメント