「GetKeyState.exe(キー状態取得実行ファイル)」の版間の差分
細 →実装例 |
細編集の要約なし |
||
| 79行目: | 79行目: | ||
;サンプルコード2 | ;サンプルコード2 | ||
* 実行ファイル GetKeyState.exe の実在確認をします(GetKeyState がない場合でも動作する) | |||
* カレントディレクトリ(Mery.exe の作業フォルダ)を変更しません | |||
<source lang="javascript"> | <source lang="javascript"> | ||
var | var ctrl = 0, alt = 0; | ||
// GetKeyState.exe のフルパスを " " で囲う | // GetKeyState.exe のフルパスを " " で囲う | ||
var | var gks = '"' + editor.FullName.replace( /[^\\]+$/ , '' ) | ||
+ 'Macros\\GetKeyState.exe"'; | |||
// 半角空白+コマンドライン引数をつけて GetKeyState | // 半角空白+コマンドライン引数をつけて GetKeyState を実行する(実行ファイルの実在確認をする) | ||
if ( new ActiveXObject( "Scripting.FileSystemObject" ).FileExists( gks ) ) { | |||
var wshShell = new ActiveXObject('WScript.Shell'); | |||
// Ctrl キーの状態を取得 | // Ctrl キーの状態を取得 | ||
ctrl = wshShell.Run( gks + ' control', 0, true ); | |||
// Alt キーの状態を取得 | // Alt キーの状態を取得 | ||
alt = WshShell.Run( gks + ' alt' , 0, true ); | |||
} | |||
// 修飾キーによる動作の切り替え | // 修飾キーによる動作の切り替え | ||
| 103行目: | 109行目: | ||
} | } | ||
else { | else { | ||
window.Alert( "修飾キーは押されていません" ); | window.Alert( "修飾キーは押されていません" ); // ← GetKeyState.exe がない場合も | ||
} | } | ||
</source> | </source> | ||
| 109行目: | 115行目: | ||
;サンプルコード3 | ;サンプルコード3 | ||
ポップアップメニューマクロへの導入サンプル | |||
*メニューに表示する内容や、選択した項目から実行するコマンドを切り替えます | |||
<source lang="javascript"> | <source lang="javascript"> | ||
var | var gks = editor.FullName.replace( /[^\\]+$/i , "" ) | ||
+ "Macros\\GetKeyState.exe"; | |||
var WshShell = new ActiveXObject( "WScript.Shell" ); | var WshShell = new ActiveXObject( "WScript.Shell" ); | ||
// マクロ開始時の Ctrl キーの状態を取得 | // マクロ開始時の Ctrl キーの状態を取得 | ||
var $ctrl1 = WshShell.Run( "\"" + | var $ctrl1 = WshShell.Run( "\"" + gks + "\" ctrl", 0, true ); | ||
var menu = CreatePopupMenu(); | var menu = CreatePopupMenu(); | ||
menu.Add( "ほげ", 1 ); | menu.Add( "ほげ", 1 ); | ||
// Ctrl キーを押しながら実行したときは、項目を追加表示する | // Ctrl キーを押しながら実行したときは、項目を追加表示する | ||
if ( $ctrl1 == 1 ) { | if ( $ctrl1 == 1 ) { | ||
| 128行目: | 136行目: | ||
var r = menu.Track( mePosMouse ); | var r = menu.Track( mePosMouse ); | ||
// Ctrl | // Ctrl キーを押しながら項目を選択したときは、動作をを変更する | ||
var $ctrl2 = WshShell.Run( "\"" + | var $ctrl2 = WshShell.Run( "\"" + gks + "\" ctrl", 0, true ); | ||
switch( r ) { | switch( r ) { | ||
case 1: | case 1: | ||
if ( $ctrl2 == 0 ) window.Alert( "ほげ" ); | if ( $ctrl2 === 0 ) window.Alert( "ほげ" ); | ||
else if ( $ctrl2 == 1 ) window.Alert( "ふが" ); | else if ( $ctrl2 === 1 ) window.Alert( "ふが" ); | ||
break; | break; | ||
case 2: | case 2: | ||
if ( $ctrl2 == 0 ) window.Alert( "ほげほげ" ); | if ( $ctrl2 === 0 ) window.Alert( "ほげほげ" ); | ||
else if ( $ctrl2 == 1 ) window.Alert( "ふがふが" ); | else if ( $ctrl2 === 1 ) window.Alert( "ふがふが" ); | ||
break; | break; | ||
| 167行目: | 176行目: | ||
*「[[位置情報を保存してから「すべて選択/選択解除」(非スクロール)#【include 版】位置を復帰/保存|位置を復帰/保存]]」マクロに使わせていただきました | *「[[位置情報を保存してから「すべて選択/選択解除」(非スクロール)#【include 版】位置を復帰/保存|位置を復帰/保存]]」マクロに使わせていただきました | ||
: このページの [[#実装例]] の節に「サンプルコード3」を追加しました (2019/11/13 sukemaru) | : このページの [[#実装例]] の節に「サンプルコード3」を追加しました (2019/11/13 sukemaru) | ||
* 「[[対応する括弧に移動#おまけ|対応するカッコに移動・選択]]」に使わせていただきました | |||
: 「サンプルコード2」を変更しました (2019/12/02 sukemaru) | |||
スポンサーリンク