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

Sukemaru (トーク | 投稿記録)
Sukemaru (トーク | 投稿記録)
細編集の要約なし
79行目: 79行目:


;サンプルコード2
;サンプルコード2
* 実行ファイル GetKeyState.exe の実在確認をします(GetKeyState がない場合でも動作する)
* カレントディレクトリ(Mery.exe の作業フォルダ)を変更しません
<source lang="javascript">
<source lang="javascript">
var wshShell = new ActiveXObject('WScript.Shell');
var ctrl = 0, alt = 0;


// GetKeyState.exe のフルパスを " " で囲う
// GetKeyState.exe のフルパスを " " で囲う
var getKeyState = '"' + editor.FullName.replace( /[^\\]+$/ , '' ) + 'Macros\\GetKeyState.exe"';
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 キーの状態を取得
var ctrl = wshShell.Run( getKeyState + ' control', 0, true );
  ctrl = wshShell.Run( gks + ' control', 0, true );
// Alt キーの状態を取得
  // Alt キーの状態を取得
var alt = WshShell.Run( getKeyState + ' alt' , 0, true );
  alt = WshShell.Run( gks + ' alt' , 0, true );
}


// 修飾キーによる動作の切り替え
// 修飾キーによる動作の切り替え
103行目: 109行目:
}
}
else {
else {
   window.Alert( "修飾キーは押されていません" );
   window.Alert( "修飾キーは押されていません" ); // ← GetKeyState.exe がない場合も
}
}
</source>
</source>
109行目: 115行目:


;サンプルコード3
;サンプルコード3
ポップアップメニューマクロへの導入サンプルです。<br>
ポップアップメニューマクロへの導入サンプル
メニューに表示する内容や、選択した項目から実行するコマンドを切り替えることができます。
*メニューに表示する内容や、選択した項目から実行するコマンドを切り替えます
<source lang="javascript">
<source lang="javascript">
var getKeyState = editor.FullName.replace( /[^\\]+$/i , "" )
var gks = editor.FullName.replace( /[^\\]+$/i , "" )
                + "Macros\\GetKeyState.exe";
        + "Macros\\GetKeyState.exe";
var WshShell = new ActiveXObject( "WScript.Shell" );
var WshShell = new ActiveXObject( "WScript.Shell" );
// マクロ開始時の Ctrl キーの状態を取得
// マクロ開始時の Ctrl キーの状態を取得
var $ctrl1 = WshShell.Run( "\"" + getKeyState + "\" ctrl", 0, true );
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( "\"" + getKeyState + "\" ctrl", 0, true );
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)
スポンサーリンク