「GetKeyState.exe(キー状態取得実行ファイル)」の版間の差分

Pizz (トーク | 投稿記録)
ページの作成:「= 概要 = キー押下状態を取得する実行ファイルです。 Shift、Ctrl、Alt いずれかのキーの押下状態を取得できます。 マクロスク...」
 
Sukemaru (トーク | 投稿記録)
説明文に加筆、サンプルコードを追加
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)
スポンサーリンク