イネマルのプログラミング備忘録

趣味プログラマのメモ

2018-01-01から1年間の記事一覧

DXライブラリ向け 簡易キー入力クラス

はじめに DXライブラリで、キー入力の開始や終了を取る際、自前で機能を用意する必要があります。 必要になるたびに作るのが面倒そうなので、キー入力クラステンプレート的なものを置いときます。 対象は、キーボードとマウスです。 昔、DxLibをラップした自…

WSH WSF JScript・VBScript をバッチに埋め込む方法(現在時刻を読み上げるバッチファイル)

メモ タイトルの通り、wsf 形式のWSHスクリプトをバッチファイルに埋め込む方法です。 wsfを使えば、VBScript と JScript を混在させたり、 HTML の scriptタグ と同じように記述できるのでCDNを利用できます。 バッチに埋め込むメリットは、用途次第という…

WSH JScript Chakra を使用した ES2015(ES6) 対応 ( スクリプトエンジン まとめ )

はじめに WSH JScript (wscript cscript) で使用できる スクリプトエンジン まとめです。 JavaScript限定、プリインストールされている物だけなので注意。 ツールとして独立しているChakraCoreや、その他サードパーティーは含みません。 各 JavaScript エン…

WSH JScript JSONファイルを使用する

はじめに WSH JScript で、設定ファイルに対応する際に使用した方法です。 WSH(VBScript, JScript) から設定ファイルを扱う場合、JSON を使用すると楽できます。 注意 文字コードは、SJIS を使用しています。 それ以外の文字コードでは、動作検証していませ…

C++ Windowsで ini ファイルを読み込む

はじめに Windows で、ini ファイルの読み込みと言えば、GetPrivateProfileStringです。 時間をかけずに、手っ取り早く設定ファイル対応を行うときに使えるかもしれない方法です。 注意 GetPrivateProfileString は、下記に引用した通り 16ビット互換 のため…

C++ ビルド時の西暦を表示

メモ 定義済みマクロ の、__DATE__ は文字列として扱えるので、 西暦部分の先頭アドレスがあれば事足りる。 実装 #include <iostream> // cout constexpr const char* YEAR = (__DATE__ + 7); int main() { std::cout << "ビルド年:" << YEAR << std::endl; return 0;</iostream>…

C++ バージョン番号を比較する方法

C++

はじめに 複数の値から形成されているバージョン番号などの値を比較する際、 一つずつ比較するのは、手間ですが、std::lexicographical_compare を使用すると、一行で書けます。 なお、std::tuple でより短くスマートに実装できるので、追記要参照。 実装 #i…

Windows C++ 実行ファイルからバージョン情報を取得する

メモ バージョンリソースが含まれるファイルからバージョン情報を取得する方法。 Windows API の GetFileVersionInfo を使って取得する。 実装 #include <windows.h> #include <iostream> #include <vector> #include <string> #pragma comment(lib, "version.lib") // バージョン取得用の構造体 s</string></vector></iostream></windows.h>…

C++ 環境変数を含むパスをstd::stringに展開する方法

はじめに パスに限らず、環境変数を含む文字列は、 WindowsAPIの ExpandEnvironmentStrings で展開できます。 std::string に展開する方法をメモ。 実装 #include <windows.h> #include <iostream> #include <string> // 環境変数を含むパスを展開する bool GetExpandEnvironmentPath(cons</string></iostream></windows.h>…

C++ で、コマンドの標準出力を取得する方法(CreateProcessなし)

はじめに Windows でコマンドを実行する際、標準出力を取得する方法です。 コンソール画面が表示されても問題ない場合、 もしくは、CUIプログラムで使用できる方法です。 前提 system 関数だけでは、標準出力が簡単に取得できません。 Windows 環境では、API…

C++ コマンドライン引数をstd::vector<std::string>に展開する方法

ちょっとしたメモ コマンドライン引数をstd::vector<std::string>に展開する方法です。 パース自体は、コンストラクタのみで実現できます。 実装 #include <iostream> #include <vector> #include <string> int main(int argc, char** argv) { using namespace std; vector<string> args(argv, argv + argc);</string></string></vector></iostream></std::string>…