「GetKeyState.exe(キー状態取得実行ファイル)」の版間の差分
ページの作成:「= 概要 = キー押下状態を取得する実行ファイルです。 Shift、Ctrl、Alt いずれかのキーの押下状態を取得できます。 マクロスク...」 |
説明文に加筆、サンプルコードを追加 |
||
| 1行目: | 1行目: | ||
= 概要 = | = 概要 = | ||
修飾キーの押下状態を取得する実行ファイルです。 | |||
Shift、Ctrl、Alt いずれかのキーの押下状態を取得できます。 | Shift、Ctrl、Alt いずれかのキーの押下状態を取得できます。 | ||
| 12行目: | 12行目: | ||
その後、zipファイルを展開して、マクロから実行されるフォルダーに配置してください。 | その後、zipファイルを展開して、マクロから実行されるフォルダーに配置してください。 | ||
(推奨は "Macros" | (推奨は '''"Macros"フォルダー'''とします) | ||
'''ダウンロード'''<br> | |||
[[ファイル:GetKeyState.zip]] | [[ファイル:GetKeyState.zip]] | ||
= 更新履歴 = | = 更新履歴 = | ||
| 20行目: | 23行目: | ||
2019/3/23 公開ページの変更(中身に変更はありません) | 2019/3/23 公開ページの変更(中身に変更はありません) | ||
= 使い方 = | = 使い方 = | ||
コマンドライン引数で、"Shift" "Ctrl" "Alt" のいずれかを渡してください。 | コマンドライン引数で、"Shift" "Ctrl" "Alt" のいずれかを渡してください。 | ||
GetKeyState.exe shift // Shiftキーの押下状態を取得する場合 | |||
* 大文字小文字は区別しません | * 大文字小文字は区別しません | ||
* 実は先頭の1文字しか判断していませんので、"s"のみとかでも大丈夫です | * 実は先頭の1文字しか判断していませんので、"s"のみとかでも大丈夫です | ||
| 33行目: | 38行目: | ||
マクロにショートカットキーを割り当てる際は、該当する修飾キー "あり" と "なし" の両方を割り当ててください | |||
* Shift+F8 / F8 など | * Shift+F8 / F8 など | ||
ツールバーにアイコン化しているマクロの場合は、"修飾キー+クリック" か "ふつうの左クリック" かでマクロの動作を切り替えることができます。 | |||
ツールバーの [マクロ] メニューや右クリックメニューから実行する際は、Shift または Ctrl キーを押しながら実行することができますが、Alt キーを押しながら実行することはできません(Alt キーでメニューのポップアップ表示がキャンセルされるため)。 | |||
起動までに若干のタイムラグがありますので、すばやく操作すると取りこぼすことがあります。 | 起動までに若干のタイムラグがありますので、すばやく操作すると取りこぼすことがあります。 | ||
そういう意味では、ショートカットキーにはあまり向かないかもしれません。 | そういう意味では、ショートカットキーにはあまり向かないかもしれません。 | ||
私は、ツールバー起動で使っています。 | 私は、ツールバー起動で使っています。 | ||
: ※マクロの処理が開始するか終了するまで修飾キーを押しつづければ、取りこぼしはなくなります。<br> また、マクロの処理が全体的に重い/長いソースコードの場合は、[[#実装例|実装例]] にあるような修飾キー取得コードの部分をソースコードの先頭に配置するとよいでしょう。 | |||
= 実装例 = | = 実装例 = | ||
'''サンプルコード1''' | |||
<source lang="javascript"> | <source lang="javascript"> | ||
var wshShell = new ActiveXObject("WScript.Shell"); | var wshShell = new ActiveXObject("WScript.Shell"); | ||
| 50行目: | 66行目: | ||
// SHIFTキー状態を取得 | // SHIFTキー状態を取得 | ||
var shift = wshShell.Run("GetKeyState.exe shift", 0, true); | var shift = wshShell.Run("GetKeyState.exe shift", 0, true); | ||
if(shift == -1) window.Quit(); | if(shift == -1) window.Quit(); | ||
if(shift == 1) window.Alert("Shiftキーが押されています"); | if(shift == 1) window.Alert("Shiftキーが押されています"); | ||
| 55行目: | 72行目: | ||
'''サンプルコード2''' | |||
<source lang="javascript"> | |||
var wshShell = new ActiveXObject('WScript.Shell'); | |||
// GetKeyState.exe のフルパス部分を " " で囲い、半角空白を付加する | |||
var getKeyState = '"' + editor.FullName.replace( /mery\.exe$/i , 'Macros\\' ) + 'GetKeyState.exe "'; | |||
// コマンドライン引数をつけて GetKeyState を実行する | |||
// Ctrl キーの状態を取得 | |||
var ctrl = wshShell.Run( getKeyState + 'control', 0, true ); | |||
// Alt キーの状態を取得 | |||
var alt = WshShell.Run( getKeyState + 'alt' , 0, true ); | |||
// 修飾キーによる動作の切り替え | |||
if ( ctrl > 0 ) | |||
window.Alert( "Ctrlキーが押されています" ); | |||
else if ( Alt > 0 ) | |||
window.Alert( "Altキーが押されています" ); | |||
else | |||
window.Alert( "修飾キーは押されていません" ); | |||
</source> | |||
= その他 = | |||
ソースも置いときます(VS2005 C++) | ソースも置いときます(VS2005 C++) | ||
| 60行目: | 102行目: | ||
[[ファイル:GetKeyStateSrc.zip]] | [[ファイル:GetKeyStateSrc.zip]] | ||
---- | |||
<br> | |||
* 「[[カッコをはずす#カッコを追加/削除|カッコを追加/削除]]」マクロに使わせていただきました (sukemaru) | |||
* ページ内の説明文に加筆させていただきました (2019/03/23 sukemaru) | |||
2019年3月23日 (土) 18:23時点における版
概要
修飾キーの押下状態を取得する実行ファイルです。
Shift、Ctrl、Alt いずれかのキーの押下状態を取得できます。 マクロスクリプトからキー状態を取得し、状態に応じて動作をコントロールしたくて作成しました。
作成されたマクロから利用できますので、ご自由にお使いください。
zipファイルをダウンロードしたら、ファイルのプロパティ画面で「ブロックの解除」を行ってください。
(これをしないと実行時に警告が表示されることがあります)
その後、zipファイルを展開して、マクロから実行されるフォルダーに配置してください。 (推奨は "Macros"フォルダーとします)
ダウンロード
ファイル:GetKeyState.zip
更新履歴
2019/3/4 新規作成
2019/3/23 公開ページの変更(中身に変更はありません)
使い方
コマンドライン引数で、"Shift" "Ctrl" "Alt" のいずれかを渡してください。
GetKeyState.exe shift // Shiftキーの押下状態を取得する場合
- 大文字小文字は区別しません
- 実は先頭の1文字しか判断していませんので、"s"のみとかでも大丈夫です
戻り値(終了コード)
- 1: キーが押されている
- 0: キーは押されていない
- -1: エラー(引数間違い、メッセージボックスを表示します)
マクロにショートカットキーを割り当てる際は、該当する修飾キー "あり" と "なし" の両方を割り当ててください
- Shift+F8 / F8 など
ツールバーにアイコン化しているマクロの場合は、"修飾キー+クリック" か "ふつうの左クリック" かでマクロの動作を切り替えることができます。
ツールバーの [マクロ] メニューや右クリックメニューから実行する際は、Shift または Ctrl キーを押しながら実行することができますが、Alt キーを押しながら実行することはできません(Alt キーでメニューのポップアップ表示がキャンセルされるため)。
起動までに若干のタイムラグがありますので、すばやく操作すると取りこぼすことがあります。
そういう意味では、ショートカットキーにはあまり向かないかもしれません。
私は、ツールバー起動で使っています。
- ※マクロの処理が開始するか終了するまで修飾キーを押しつづければ、取りこぼしはなくなります。
また、マクロの処理が全体的に重い/長いソースコードの場合は、実装例 にあるような修飾キー取得コードの部分をソースコードの先頭に配置するとよいでしょう。
実装例
サンプルコード1
var wshShell = new ActiveXObject("WScript.Shell");
// カレントディレクトリをマクロディレクトリに変更
wshShell.CurrentDirectory = editor.FullName.match(/^.*\\/)[0] + 'Macros';
// SHIFTキー状態を取得
var shift = wshShell.Run("GetKeyState.exe shift", 0, true);
if(shift == -1) window.Quit();
if(shift == 1) window.Alert("Shiftキーが押されています");
サンプルコード2
var wshShell = new ActiveXObject('WScript.Shell');
// GetKeyState.exe のフルパス部分を " " で囲い、半角空白を付加する
var getKeyState = '"' + editor.FullName.replace( /mery\.exe$/i , 'Macros\\' ) + 'GetKeyState.exe "';
// コマンドライン引数をつけて GetKeyState を実行する
// Ctrl キーの状態を取得
var ctrl = wshShell.Run( getKeyState + 'control', 0, true );
// Alt キーの状態を取得
var alt = WshShell.Run( getKeyState + 'alt' , 0, true );
// 修飾キーによる動作の切り替え
if ( ctrl > 0 )
window.Alert( "Ctrlキーが押されています" );
else if ( Alt > 0 )
window.Alert( "Altキーが押されています" );
else
window.Alert( "修飾キーは押されていません" );
その他
ソースも置いときます(VS2005 C++) (こちらは通常ダウンロードの必要はありません)
- 「カッコを追加/削除」マクロに使わせていただきました (sukemaru)
- ページ内の説明文に加筆させていただきました (2019/03/23 sukemaru)