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

趣味プログラマーのメモ。ニッチなネタから暗黙知まで無保証で公開。

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

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

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

ちょっとしたメモ タイトルの通り、wsf 形式のWSHスクリプトをバッチファイルに埋め込む方法です。 wsfを使えば、VBScript と JScript を混在させたり、 HTML の scriptタグ と同じように記述できるのでGoogle APIsから jQuery 使うようにしたりできます。 …

VSCode Windows版 コマンドライン引数を使用する際の注意

ちょっとしたメモ Windows版 の、VSCode を コマンドライン から使用する場合、 使用する実行ファイルは、「Code.exe」でないので、注意が必要。 コマンドラインから使用する際は、Code.exe と同じディレクトリ以下の、 「bin\code.cmd」を使用する必要があ…

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

はじめに WSH JScript (wscript cscript) で使用できる スクリプトエンジン まとめです。 サードパーティー製は含みません。 JavaScript限定、初期状態で使用可能な物だけなので注意。 各 JavaScript エンジン について JScript (JavaScript) だけでも、4種…

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

はじめに WSH JScript で、設定ファイルに対応する際に使用した方法です。 WSH(VBScript, JScript) から設定ファイルを扱う場合、JSON を使用すると楽できます。 その他のフォーマットであれば、XML を MSXML を使用して対応できますが、JSON の方がコードが…

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

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

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

ちょっとしたメモ 定義済みマクロ の、__DATE__ は文字列として扱えるので、 西暦部分の先頭アドレスがあれば事足りる。 実装 あとがき 西暦のみの定義済みマクロが無いのか調べた結果、無さそうという結論。 よく考えたら、__DATE__から取り出せるよねと言…

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

C++

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

C++ ファイルバージョンの取得方法

はじめに ひねりなし、GetFileVersionInfo を使用したファイルバージョンの取得方法。 必ずしも、ファイルプロパティから確認できるバージョンと一致しないので注意。 実装 あとがき 実際には、使用していない変数もnullptrを許容しているのか不明だったため…

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

はじめに パスに限らず、環境変数を含む文字列は、 WindowsAPIの ExpandEnvironmentStrings で展開できます。 std::string に展開する方法をメモ。 実装 あとがき 今回は、stringに展開しましたが、 wstring なら ExpandEnvironmentStringsW で展開できます。

ファイルエクスプローラーからコマンドプロンプトを起動するテクニックの罠

はじめに ファイルエクスプローラー使用時に、 現在のディレクトリをカレントとしてコマンドプロンプトを起動するテクニックとして アドレスバーに「cmd」と入力する方法が紹介されることがあります。 このテクニックが、常に意図通り動作しないことがあると…

WSH JScript で、C# プログラムを実行する方法

はじめに JScript から C# のソースをコンパイルする話 JScript に C# ソースを埋め込んで、コンパイル→実行 みたいなことができます。 ついでに、生成したC#プログラムから実行元のJScriptの関数を呼び出す機能を用意。 前提 PowerShell 使う方が正攻法なの…

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

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

WSH JScript をバッチに埋め込んだ際にコンソールウィンドウのPIDを取得する方法

はじめに タイトルの通り、バッチファイルからWSH(cscript)を起動した際に コンソールウィンドウのPIDを取得する方法です。 概要 WSHからアプリケーションを実行中に コンソールウィンドウが閉じられると困るので、 コンソールウィンドウのプロセスを特定す…

【WSH】JScript で、多重起動判定

はじめに WSHで多重起動判定する方法です。 できるだけ、スマートに実装したつもりです。 実装 サンプルは、shebang記法でバッチファイルにJScriptに埋め込みしていますが 普通に.jsでも動くはず。 Sleepで適当な時間待って、終了前に起動したものは多重起動…

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

C++

ちょっとしたメモ 使わなくても良いテクニックですが、どこかで使いそうなのでメモっときます。 用途があるとしたら、 vectorコンテナとしてコマンドラインをやり取りしたいときとかでしょうか? 実装 あとがき エントリーポイントを int main(std::vector<std::string> a</std::string>…

【Windows】バッチファイルで管理者権限を判定する方法 3種

バッチファイルで管理者権限を判定する方法 3種 Windowsのバッチファイルで管理者権限が必要な場合に 標準のコマンドで確かめる方法を調査したときの断片です。 以下、巷で使われている手法の3種です。 whoami コマンド いろいろな方法がありますが、自分が…

フォントファイルからフォント名を取得する

C++

目的 C++で、フォントファイルからフォント名(フォントファミリ名)を取得します。 対応フォーマットは、スタンダードに ttf, otf とします。 対応 結局のところ、バイナリから直接、フォント名を取得するのが高速だと思うので、 フォーマットを解析しながら…

string wstring 相互変換 (Windows用)

stringとwstringの相互変換 stlを使用していると、文字列にstd::stringを使用する事が多いですが、 std::wstringに変換したいタイミングがあるかもしれません。 そんな時の対応方法の一例です。 注意 Windows環境で使える変換手法を覚書きします。 今回は 「…

C++でC#風な基本型を使う

C++

C#風に基本型が使えたら楽だと思う int.ToString()みたいにかけるC#にあこがれて 勢いでC++の基本型をラップしてみた感じ。 目的 基本型を、C#ライクに記述できるようにする。 注意 実用性は考慮していません。 完全に興味本位で書いたので、実装に穴がある…

C++で各種関数を同一のコンテナに格納する

関数をコンテナに格納する テーブルに関数(std::function)を登録して関数名の文字列で呼び出す みたいなことをやったときにクラスのメソッドの登録で 微妙にハマり、備忘録行き 注意 引数の数が同一でないと格納できない方法です。 引数が違うメソッドの格納…

C++で双方向リストをクイックソート

C++

独自実装のリストクラスをクイックソートする 訳あって、STL(std)のlistを使用しない状況に遭遇 ソートを実装する必要が出たときに、使用した実装を備忘録 注意 stdが使用できる環境では無用な産物のはず 目的 シーケンシャルアクセスなコンテナ (双方向リス…

C / C++ の共用体(union)を初歩的に使う

C++

入門時にイマイチ使いどころがわからんかった共用体 プログラミングを初めて超初期のころ入門書で出会った ”union” ”共用体” のキーワード 自分の使っていた入門書では 構造体の直後位に解説されていて いったいどこで使うの? といった感じで放置していたが…

C# + DXライブラリ でIMEが動作しなくなる現象の回避方法

C#+DXライブラリで IMEが無効化されてしまう現象 C#のWindowsFormApplicationとDXライブラリのC#用dllを使い フォーム上でテキスト入力ができるコントロールを使うと ”ImeModeをOnにしてもIMEが無効化されてしまう” 現象にハマり・・・ とりあえず解決方法…

C++でワイド文字(wchar_t)を使うときの注意点 ~ロケールを添えて~

wchar_tを使う! c++で文字を扱うときに、char型とwchar_t型があります。 char型と同じ感覚で使うと、要らないところでハマります。 自分がハマったので備忘録行き。先に、結論だけ書くと ”wchar_tを使うならロケール設定をしよう!” という事です。 確認用…

Visual Studio 2010 C++ リファクタリング

【目的】 今更だけど Visual Studio 2010 C++ でリファクタリング(自動リネーム)を使う【達成条件】 ・無料でやる【注意】 ・正攻法ではありません(故に↓) ・すべて個人の責任で行ってください(こちらは一切の責任を持ちません) ・VS2013(以降)は、公式で…

ブログはじめました。

はじめまして、こんにちは。 技術的なことを中心に、 備忘録的な感じで更新して行きたいと思ってます。 がんばるぞ!