他人の空似自作物置場

keyboard_emulater.zip/Readme.txt

プログラム名:keyboard_emulater


用途:キーボード操作エミュレート


使い方:
keyboard_emulater.hをincludeして、keyboard_emulater.cppと一緒にコンパイルするだけ。
各種メソッドの効果および使い方はkeyboard_emulater.hおよびsampleフォルダ以下を参照


インストール:
zip展開するだけ


アンインストール:
レジストリもテンポラリファイルも弄っておりません。
フォルダごと削除するだけですっきりさっぱりおさらばできます。


ファイル解説:
keyboard_emulater.cpp	keyboard_emulater本体
keyboard_emulater.h	keyboard_emulaterのヘッダファイル
sample/sample1.cpp	サンプルプログラム
sample/sample1.exe	サンプルプログラムをコンパイルしたもの
Readme.txt		今読んでいるこれ
History.txt		更新履歴です。


Q&A:
	Q:使い方わかんね
	A:ごめんね、説明とサンプルコードの書き方下手でごめんね

	Q:サンプルにインスタンスメソッドの使い方乗ってないのはなぜ
	A:余りにも特殊用途向けすぎて、サンプル単体で完結するコードが書けなかったから
	リプレイ再生とか、ある程度キー入力をまとめて一度に実行したい時とか、他アプリと協調作業したいときとか
	そういった用途でしか使えないため非常に難しいのです……

	Q:その他バグをみつけた or 動作しない or 要望がある
	A:緋想天ツールスレに書き込んでもらえれば、確認次第対応可能であれば対応します。
	どうしても直に伝えたい場合、公開しても問題が無いメールアドレスにて
	下部に記載されたアドレスまでメールをどうぞ。


作者:sweetie
メールアドレス:bnryxx332a(あっと)mail.goo.ne.jp


ライセンス:
・本ライセンスにおいて、全ての条項は「変更の有無を問わず、明示暗示を問わず、商業慈善を問わず、個人法人を問わず、保持使用を問わず、有料無料を問わず」と装飾されている物として扱う。
・著作権者は本ソフトウェアに関する一切の保障義務をもたない。
・上記条項唯一の例外として、本ライセンスに違反した場合を除いて著作権者から本ソフトウェアに関する一切の法的措置を受ける事が無い事のみ保証される。
・著作権者やその他保持者がこのライセンスの範囲で行う活動に支障が無い範囲であれば何を行っても構わない。
・上記条項の”何を行っても構わない”には本ソフトウェアの製作者を偽っての再配布も含まれる。
・全ての権利の行使において、著作権者への連絡、著作権者やライセンス条項の記載、適用ライセンスなどの制限は一切存在しない。
著作権者名:sweetie


面倒な人向けライセンス解説:
使用改変再配布、全て何の制限もありません。
ライセンスの記載義務すらありません。
どう使おうと全て自由です。


技術情報(と、どうでもいい話):
th123_aiよりキーボード操作部分のみを抜き出したもの。

基本的にwin32apiのkeybd_event関数のラッパーであるが
一部仕様がMSDNにおいて伏せられているためMSDNの記載だけだと同等の機能を実装する事は出来ない。
まず、仮想キーコードだけ設定してもDirectInputには一切何のイベントも発生せず
ウィンドウメッセージのみ生成され実行される。
MSDNには使用されていないとある第二パラメータのbScanパラメータにスキャンコードを指定することで
DirectInputでイベントが発生するようになるが、それだけでは今度はウィンドウメッセージが生成されなくなる。
本クラスは片方の指定で両方設定するようにした物。

さらにkeybd_eventには一部スキャンコードで指定したスキャンコードと実際に生成されるイベントが異なるものが存在する。
これはキーボード種別によらず動作させるための抽象化であり、英語キーボードであれば発生しない。
日本語キーボードでも基本的に入力だけであれば問題ないが
実際にDirectInputからスキャンコードを取得し、それを元にイベントを生成する場合には注意が必要。
(一般的な日本語キーボードの場合^@[:]\の6キーがずれる。 その他キーボードの場合は不明)

ちなみに、これらの情報はMicrosoftのDirectInput関連ページに散見しており、完全な隠し仕様では無い。
とはいえ、今のところ全て網羅的に記載されているページは確認できないので隠し仕様同然だと思っていいと思うが。