|
V1.52β9でのメソッド追加ありがとうございました。
だいぶ時間が空いてしまいましたが、その後の報告です。
気になる点 2) で挙げたチャタリング問題について、V1.52β9で追加いただいたメソッドを利用することで解決できました。
尚、先にお伝えした追加条件 if(hwnd != 0) は実際には全く意味のないものでした...
また、気になる点 3) で挙げたExplorerと比較した場合の反応の遅れ問題についても
同じくV1.52β9で追加いただいたメソッドを利用することで(僅かではありますが)緩和させることができました。
だたし、現状では「スクリプト自体の処理時間」よりも「スクリプトが起動されるまでの時間」の方が支配的であるように感じました。
確認したところ、秀丸ファイラー組み込みのプレビュー表示機能にも同様の遅れが生じているようです。
<更新用スクリプトの先頭にBeep();を置いてタイミングを測定した結果>
・フォーカス遷移操作 → beep音: 600ms前後
・beep音 → プレビュー表示更新: 20ms前後
更新用スクリプトの起動ディレイ短縮によって顕在化する問題がなく、且つ技術的に可能であるなら
もう少しディレイを短くできると嬉しいです。
ちなみに、下記の修正版スクリプトではQuickLook.exeのパスを変数登録する機能を単独で切り出す構成にしています。
現在は手動で実行していますが、自動起動スクリプトとして「ファイル選択一覧の選択変更後」に加えて
「秀丸ファイラ起動時」を登録可能にしていただけると、他でも使いどころがある(?)かもしれません。
もっとも、本件に関して言えば実行時間の短縮効果は芳しくなかったので、素直に毎回exeパスを構築しても問題はありませんが...
<<修正版スクリプト(3つのスクリプトファイルに機能分割)>>
// QuickLook_Define.js
// ----------------------------
// 機能: QuickLook.exe のパスを静的変数 '_exe' に格納する
// 使い方: 秀丸ファイラー起動後、QuickLookのプレビュー表示操作の前に一度実行しておく
// ----------------------------
var objShell = new ActiveXObject("WScript.Shell");
var exe = objShell.ExpandEnvironmentStrings("%LOCALAPPDATA%")
+ "\\Programs\\QuickLook\\QuickLook.exe";
SetStaticVariable("_exe",exe);
//Message('QuickLook.exeのpathを登録しました\n'+GetStaticVariable('_exe'));
// QuickLook_Launch.js
// ----------------------------
// 機能: QuickLookのプレビュー表示を開始/終了する
// 使い方: ブックマークにスクリプトとして登録しておく(スペースキーへの割り当てを推奨)
// ----------------------------
//beep();
var iItem = GetNextItem(-1,2);
if(iItem>=0){
//Message('フォーカスアイテムあり');
var objShell = new ActiveXObject("WScript.Shell");
objShell.Run( GetStaticVariable('_exe') + ' "' + GetItemPath(iItem)+'"');
objShell = null;
SetStaticVariable("_iItem",iItem);
sleep(150); // プレビュー表示の開始ディレイを考慮した調整(150ms前後を推奨)
var hwnd = FindWindow("QuickLook.exe;;","",1);
SetStaticVariable("_hwnd",hwnd);
}
// QuickLook_Update.js
// ----------------------------
// 機能: QuickLookのプレビュー表示を更新する
// 使い方: 自動起動スクリプトとして [ファイル一覧の選択変更後] に登録しておく
// ----------------------------
//beep();
var hwnd = GetStaticVariable('_hwnd');
var iItem = GetNextItem(-1,2);
if(hwnd != 0 && IsWindowVisible(hwnd) && iItem>=0){
//Message('QuickLookプレビュー表示中 + フォーカスアイテムあり');
if(iItem != GetStaticVariable('_iItem')){
//Message("フォーカスアイテム更新\n----------------------------\n現: "+GetItemPath(GetStaticVariable("_iItem"))+"\n新: "+GetItemPath(iItem));
var objShell = new ActiveXObject("WScript.Shell");
objShell.Run( GetStaticVariable('_exe') + ' "' + GetItemPath(iItem)+'"');
objShell = null;
SetStaticVariable("_iItem",iItem);
}
}
|
|