「GetKeyState.exe(キー状態取得実行ファイル)」の版間の差分
(→その他) |
(→その他) |
||
123行目: | 123行目: | ||
* 「対応する括弧に移動」マクロの拡張コード「[[対応する括弧に移動#範囲選択の拡張|範囲選択の拡張]]」に使わせていただきました (2019/04/24 sukemaru) | * 「対応する括弧に移動」マクロの拡張コード「[[対応する括弧に移動#範囲選択の拡張|範囲選択の拡張]]」に使わせていただきました (2019/04/24 sukemaru) | ||
* 「[[全角/半角変換]]」マクロに使わせていただきました (2019/05/09 sukemaru) | * 「[[全角/半角変換]]」マクロに使わせていただきました (2019/05/09 sukemaru) | ||
* [[「クリップボード履歴」メニューのマクロ化]] に使わせていただきました (2019/08/01 sukemaru) |
2019年8月2日 (金) 01:53時点における版
概要
修飾キーの押下状態を取得する実行ファイルです。
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 キーでメニューのポップアップ表示がキャンセルされるため)。
起動までに若干のタイムラグがありますので、すばやく操作すると取りこぼすことがあります。
そういう意味では、ショートカットキーにはあまり向かないかもしれません。
私は、ツールバー起動で使っています。
- ※マクロの処理が開始するか終了するまで修飾キーを押しつづければ、取りこぼしはなくなります。
また、マクロの処理が全体的に重い/長いソースコードの場合は、実装例 にあるような修飾キー取得コードの部分をソースコードの先頭に配置するとよいでしょう。
実装例
window.Alert( "XXキーが押されています" );
の部分を任意の動作コードに置きかえてください。マクロの動作内容に変化をつけたり、複数のマクロの実行コードを振り分けてひとつのマクロにまとめたりすることができます。
- サンプルコード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){
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 && alt > 0 ) {
window.Alert( "CtrlキーとAltキーが押されています" );
}
else if ( ctrl > 0 ) {
window.Alert( "Ctrlキーが押されています" );
}
else if ( Alt > 0 ) {
window.Alert( "Altキーが押されています" );
}
else {
window.Alert( "修飾キーは押されていません" );
}
その他
ソースも置いときます(VS2005 C++) (こちらは通常ダウンロードの必要はありません)
※ 著作権は放棄します、悪意のない公序良俗の範囲内でしたら、ソースを含めご自由にお使いください (そのかわり、一切の責任も放棄します...まぁ、こんなもので誤動作もあったもんじゃないですが、派生版まで責任が持てないので)
- 「カッコを追加/削除」マクロに使わせていただきました (2019/03/19 sukemaru)
- ページ内の説明文に加筆させていただきました (2019/03/23 sukemaru)
- 「行コメント」マクロに使わせていただきました (2019/03/25 sukemaru)
- イベントマクロ「ファイルのフルパスをコピーして閉じる 」に使わせていただきました (2019/04/14 sukemaru)
- 「対応する括弧に移動」マクロの拡張コード「範囲選択の拡張」に使わせていただきました (2019/04/24 sukemaru)
- 「全角/半角変換」マクロに使わせていただきました (2019/05/09 sukemaru)
- 「クリップボード履歴」メニューのマクロ化 に使わせていただきました (2019/08/01 sukemaru)