「GetKeyState.exe(キー状態取得実行ファイル)」の版間の差分
全角から半角に修正 |
セクションの順番を変更 |
||
| (2人の利用者による、間の22版が非表示) | |||
| 1行目: | 1行目: | ||
[https://www.haijin-boys.com/software/mery/mery-3-7-0#36 Mery Ver 3.7.2]から[[マクロリファレンス:3:Shell オブジェクト#GetKeyState メソッド|shell.GetKeyStateメソッド]]が使えるようになりました。プロセス起動のタイムラグなど、パフォーマンス面でも有利ですし、柔軟性も高いので、該当バージョンが利用できる場合は上記メソッドの利用を検討してください。 | |||
== 概要 == | == 概要 == | ||
修飾キーの押下状態を取得する実行ファイルです。 | 修飾キーの押下状態を取得する実行ファイルです。 | ||
Shift、Ctrl、Alt | Shift、Ctrl、Alt いずれかのキーの押下状態を取得できます。マクロスクリプトからキー状態を取得し、状態に応じて動作をコントロールしたくて作成しました。 | ||
作成されたマクロから利用できますので、ご自由にお使いください。 | 作成されたマクロから利用できますので、ご自由にお使いください。 | ||
zipファイルをダウンロードしたら、ファイルのプロパティ画面で「ブロックの解除」を行ってください(これをしないと実行時に警告が表示されることがあります)。 | |||
その後、zipファイルを展開して、マクロから実行されるフォルダーに配置してください(推奨は '''"Macros"フォルダー'''とします)。 | |||
== | == 使い方 == | ||
コマンドライン引数で、"Shift" "Ctrl" "Alt" のいずれかを渡してください。 | |||
<pre> | |||
GetKeyState.exe shift // Shiftキーの押下状態を取得する場合 | |||
</pre> | |||
* 大文字小文字は区別しません | * 大文字小文字は区別しません | ||
* 実は先頭の1文字しか判断していませんので、"s"のみとかでも大丈夫です | * 実は先頭の1文字しか判断していませんので、"s"のみとかでも大丈夫です | ||
戻り値(終了コード) | |||
* 1: キーが押されている | * 1: キーが押されている | ||
* 0: キーは押されていない | * 0: キーは押されていない | ||
* -1: | * -1: エラー(引数間違い、メッセージボックスを表示します) | ||
マクロにショートカットキーを割り当てる際は、該当する修飾キー "あり" と "なし" の両方を割り当ててください | マクロにショートカットキーを割り当てる際は、該当する修飾キー "あり" と "なし" の両方を割り当ててください | ||
| 39行目: | 34行目: | ||
ツールバーの [マクロ] メニューや右クリックメニューから実行する際は、Shift または Ctrl キーを押しながら実行することができますが、Alt キーを押しながら実行することはできません(Alt キーでメニューのポップアップ表示がキャンセルされるため)。 | ツールバーの [マクロ] メニューや右クリックメニューから実行する際は、Shift または Ctrl キーを押しながら実行することができますが、Alt キーを押しながら実行することはできません(Alt キーでメニューのポップアップ表示がキャンセルされるため)。 | ||
起動までに若干のタイムラグがありますので、すばやく操作すると取りこぼすことがあります。そういう意味では、ショートカットキーにはあまり向かないかもしれません。私は、ツールバー起動で使っています。 | |||
: ※マクロの処理が開始するか終了するまで修飾キーを押しつづければ、取りこぼしはなくなります。また、マクロの処理が全体的に重い/長いソースコードの場合は、[[#実装例|実装例]] にあるような修飾キー取得コードの部分をソースコードの先頭に配置するとよいでしょう。 | : ※マクロの処理が開始するか終了するまで修飾キーを押しつづければ、取りこぼしはなくなります。また、マクロの処理が全体的に重い/長いソースコードの場合は、[[#実装例|実装例]] にあるような修飾キー取得コードの部分をソースコードの先頭に配置するとよいでしょう。 | ||
| 52行目: | 45行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
の部分を任意の動作コードに置きかえてください。マクロの動作内容に変化をつけたり、複数のマクロの実行コードを振り分けてひとつのマクロにまとめたりすることができます。 | |||
;サンプルコード1 | ;サンプルコード1 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
var wshShell = new ActiveXObject("WScript.Shell"); | var wshShell = new ActiveXObject("WScript.Shell"); | ||
| 73行目: | 65行目: | ||
* 実行ファイル GetKeyState.exe の実在確認をします(GetKeyState がない場合でも動作する) | * 実行ファイル GetKeyState.exe の実在確認をします(GetKeyState がない場合でも動作する) | ||
* カレントディレクトリ(Mery.exe の作業フォルダ)を変更しません | * カレントディレクトリ(Mery.exe の作業フォルダ)を変更しません | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
var ctrl = 0, alt = 0; | var ctrl = 0, alt = 0; | ||
| 108行目: | 100行目: | ||
ポップアップメニューマクロへの導入サンプル | ポップアップメニューマクロへの導入サンプル | ||
*メニューに表示する内容や、選択した項目から実行するコマンドを切り替えます | *メニューに表示する内容や、選択した項目から実行するコマンドを切り替えます | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
var gks = editor.FullName.replace( /[^\\]+$/i , "" ) | var gks = editor.FullName.replace( /[^\\]+$/i , "" ) | ||
+ "Macros\\GetKeyState.exe"; | + "Macros\\GetKeyState.exe"; | ||
| 145行目: | 137行目: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== ダウンロード == | |||
[[ファイル:GetKeyState.zip]] | |||
== その他 == | == その他 == | ||
ソースも置いときます(VS2005 C++) | ソースも置いときます(VS2005 C++)(こちらは通常ダウンロードの必要はありません) | ||
[[ファイル:GetKeyStateSrc.zip]] | [[ファイル:GetKeyStateSrc.zip]] | ||
※ | ※ 著作権は放棄します。悪意のない公序良俗の範囲内でしたら、ソースを含めご自由にお使いください(そのかわり、一切の責任も放棄します...まぁ、こんなもので誤動作もあったもんじゃないですが、派生版まで責任が持てないので)。 | ||
== 変更履歴 == | |||
* | * 1.0.0 (2019-03-04) | ||
** 新規作成 | |||
スポンサーリンク