[Win32 API] OSのバージョン取得

OSVERSIONINFO構造体とGetVersionEx関数を利用すればいいらしい。
ただし、OSVERSIONINFO構造体ではエディション情報(XP Home/Proとか)までは取得できない。エディション情報を取得する場合はOSVERSIONINFOEX構造体を用いる必要があるらしい。

OSVERSIONINFO構造体

DWORD dwOSVersionInfoSize
構造体のサイズ
DWORD dwMajorVersion
OSのメジャーバージョン番号
DWORD dwMinorVersion
OSのマイナーバージョン番号
DWORD dwBuildNumber
OSのビルド番号
DOWRD dwPlatformId
プラットフォームID
TCHAR szCSDVersion[128]
追加情報

各OS毎の組み合わせ*1

OSdwPlatformIddwMajorVersiondwMinorVersiondwBuildNumberszCSDVersion
Windows 951(9x系)40950 
Windows 95 SP1a
Windows 95 OSR2/2.11111B
Windows 95 OSR2.51212C
Windows 98101998 
Windows 98 SE2222A
Windows Me903000 
Windows NT 4.02(NT系)01381 
Windows 2000502195 
Windows XP12600 
Windows XP SP2Service Pack 2
Windows XP x642  
Windows Server 20032  
Windows Server 2003 R2  
Windows Vista60  

*1 : 判明次第順次更新します

使ってみる

OSVERSIONINFO osVer;
//構造体のサイズを求めてdwOSVersionInfoSizeに格納
osVer.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
::GetVersionEx( &osVer );

参考

2007/10/30(火)1年後

この記事を書く為に久しぶりに[es]以外のデジカメで写真を撮った。
で、そのメモリカードにはいっていたモノがこれ↓。

[album:2007:071030.jpg]

タイムスタンプを見ると約1年前。
……進歩してないな(汗

2007/10/30(火)ついカッとなって

買った。今はどう活用しようか悩んでいる。

[album:2007:a60_1.jpg] [album:2007:a60_2.jpg]

とりあえずPocket ATOKは入れたらしい。環境構築の記事でも作ってもいいのだけど、今更CE2.0なマシンの記事なんて必要としている人はいるのだろうか?

ナルキッソス on 雪希VGA

2007/10/26W-ZERO3::ソフト

ナルキッソスとは、「ステージ☆なな」にて無償配布されているノベルゲームです。
内容に関してはこちらを参照して頂くとして、このナルキッソス1&2はNScripterで開発されています。NScripterで開発されているということはCE機でプレイ出来ると言うことです。

CE機のNScripterプレイヤーとしてはLII雪希があり、LIIはQVGA版のみだが幅広いソフトに対応している、雪希にはVGA版があるが、動作するソフトが少ないという特徴があります。QVGA機でプレイするなら何も考えずにLIIを用いればいいのですが、W-ZERO3をはじめとしたVGA CE機でプレイしようと考えた場合、やはりVGA画質でプレイしたいものです。

今回の試みはこのナルキッソス1&2を雪希VGAでプレイしようというもの。

今回の試みで用意した物

ナルキッソス2
変換対象のゲームですのでこれがないと話が進みません。2をインストールすれば1も入っていますので両方インストールする必要はありません。
Windows Mobile VGA端末
雪希のVGA版が動作するCEデバイスが対象です。この上でナルキッソスを動かすのですからこれがないとやはり話が進みません。今回はW-ZERO3[es]を用意しました。
雪希
今回の試みで使用したのは雪希 VGA Ver4.20, WM5.0版です。
GOGO.DLL
雪希のコンバータが必要とします。午後のこ~だをインストールすれば手に入ります。私はVer3.13を利用しました。
Windowsマシン
ナルキッソスのインストールや雪希へのコンバートに使います。ナルキッソス1&2及び雪希のコンバータが動作するものを用意しましょう。私はWin2kのマシンを用意しました。
Windows Mobileデバイス用外部メモリ
miniSDなりCFなり、動作対象のCEデバイスで利用可能な外部メモリを用意することをお勧めします。というか、大抵のデバイスは外部メモリがないと入りきらないでしょう。

ナルキッソスが雪希VGAで動作するまで

  1. ナルキッソス2をWindowsマシンにインストールします。
  2. 雪希に同梱されているコンバータconvNsr.exe, convSCRIPT2.exeを利用し、ナルキッソスを雪希形式に変換します。
    • convNsrの変換時に変換対象ソフトを選びますが、ナルキッソスはリストにありません*1
    • 私は「サナララ*2」で変換を行いました。
  3. 動画を再生する場合はさらにconvJMV3.exeを利用し、MPEGデータを変換します。
  4. 変換で作成されたファイルと「サナララ」のyuki.cfgを同じフォルダに入れ、雪希のプログラムなどと共にminiSDなどの外部メモリに転送します
  5. 後はゆっくり楽しみましょう

[album:w03/soft:nar1.jpg] [album:w03/soft:nar3.jpg] [album:w03/soft:nar2.jpg] [album:w03/soft:nar4.jpg]
右画像はW-ZERO3[es]上での実際の表示です。

*1 : このため、yuki.cfgなどを見ながら適合しそうなものをTry&Errorで見つける必要があります

*2 : 少なくとも要求解像度がSVGAである必要がありそうです。その中で何でサナララかはお察しください。

注意事項

雪希はナルキッソスに正式対応していませんし、ステージ☆なな様も当然のことながらこういった変換してプレイすると行った行為のサポートはしていません。あくまで独自調査によるものです。
この件に関し、くれぐれも開発元等に問い合わせることのないようにしてください。また、自己責任でお願いします。

既知の不具合 2007/10/29

「おまけ」モードが正しく動作しません。「前の画面に戻る」(だっけ?)以外を選択すると雪希が強制終了されます。

メモとか戯言とか

  • 当初はLIIで何とかVGA画質でプレイ可能となるようにいろいろやったのですが、結局LIIでは無理でした
  • ナルキッソス2には1と2両方入っていることを知らずに両方コンバートしてしまったのは内緒
  • パッチの存在を忘れていてコンバート後に再度コンバートするはめになったのはもっと内緒
  • ナルキッソス1のコンバート(BGM 128kbps/音声 32kbps/画質 90の設定)後の総ファイルサイズは57.26MB
  • ナルキッソス2のコンバート(同上)後の総ファイルサイズは約150MB
  • 動画を再生する場合は(15fps/MAX 4.5Mbps/MP3 128Kbps での変換設定で)さらに32MB程度必要です。
  • yuki.cfgの[MESSAGE CONFIG]セクションのFONT_SIZE_ADDの値を大きくすることでフォントサイズが大きくなるようです。
  • ナルキッソスの変換に要した時間は4~5時間でした*3。2、3時間で終わるゲームのためにそんな時間を費やすのであれば母艦でプレイしろというのは禁句です。
  • 2GBのminiSDを利用していますが、いまだに某ソフトが1GB以上占拠している為窮屈です。いいかげんなんとかしないと。

追記 2007/10/27

  • とりあえずナルキッソス1@ボイスあり*4をプレイしてみましたが、最後まで問題なくプレイ出来ました。
  • ヘッドホン環境でプレイする場合、音声データ変換設定を64Kbpsくらいにした方が幸せになれるかもしれません
  • FONT_SIZE_ADDの値はW-ZERO3[es]でプレイする場合は4くらいにしない*5と字が小さくて見づらいです

*3 : 変換のTry&Error含めて

*4 : ナルキッソス2に同梱されている方

*5 : 4を超えると今度は字がはみ出してしまいます

2007/10/25(木)ある意味判りやすい?オブジェクト指向

オブジェクト指向とは仮想的なキャラクターと中の人を別々に取り扱うことで抽象度を上げ、保守性を向上させる手法である。(中略)

多くのオブジェクト指向言語は、中の人をクラスとして定義する。まず「男キャラ」「女キャラ」のようにして中の人を宣言し、「女キャラ」を実体化して「香織」「素子」などを作る(実体化したものをインスタンスと呼ぶ)。実体には、パラメータなどを格納することができる(これをメンバ変数と呼ぶ)。後述するコード例で、「香織」「素子」は、パラメータは異なっているが、中の人は同じである。

実体へのアクセスは、かならず中の人を通しておこなう。これには「会う」「話す」などのメソッド(メンバ関数とも呼ぶ)と呼ばれる関数を定義しておこなう。
(以下略)

だそうです。うーむ、よくあるオブジェクト指向の概念の説明、たとえば↓のようなもの

  • オブジェクトは現実世界の「モノ」です
  • 「哺乳類クラス」から派生して「人間」クラスが出来ている
  • 人間クラスは「話す」「歩く」などのメソッドを持つ

の説明で投げた、どちらかというとあっち寄りな人にはいいかもしれませぬ。

興味を持った方は[ucp:オブジェクト指向:こちら]。まあ、出典元があれなので内容については保証出来ませんがw