[ 新規に投稿する ]

【要望】ウィンドウオープン時の自動起動スクリプトNo.10334
mac さん 22/08/23 13:48 [ コメントを投稿する ]
  自動起動スクリプトのイベントは、現状「ファイル一覧の選択変更後」のみ(*)となっています。
ここにイベント「自身のウィンドウがオープンした時」を新設できないでしょうか。

(*)オプション > 上級者向け > スクリプト > 自動起動スクリプト


背景:
スクリプトで新規ウィンドウを開いた際に、"開かれた新規ウィンドウ側"で処理を行いたいケースがあるのですが
現状では新規ウィンドウ側でスクリプトを自動実行させる手段がなさそうでした。

なお、setStaticVariable()のnumOption=1で作成できるウィンドウ共有の静的変数を経由して、
元ウィンドウ側のスクリプトで得たデータを、新規ウィンドウ側で自動起動したスクリプトへ受け渡す
...みたいなことを考えています。


ぜひ一度ご検討いただけるとありがたいです。
[ ]
RE:10334 【要望】ウィンドウオープン時の自動起動スクリプトNo.10335
秀丸担当 さん 22/08/23 15:18 [ コメントを投稿する ]
  自動起動スクリプトは確かに1種類しかないです。
そういったものもあったらいいということで、ご意見参考にさせていただきます。

現状で、外部から新しくウィンドウが起動するのではなく、秀丸ファイラーClassic自身から起動するとしたら、HmFilerClassic.exeを/iと/xオプション付きで起動する方法があります。
/aオプションでコマンドライン上でパラメータを渡す方法もあります。

例:
js:new ActiveXObject("WScript.Shell").Run("\""+fullName+"\" /i /a123 /x \"js:message(getArg(0));\"");
[ ]
RE:10335 【要望】ウィンドウオープン時の自動起動スクリプトNo.10336
mac さん 22/08/24 17:23 [ コメントを投稿する ]
  お返事ありがとうございます。

教えていただいた手法を試したところ、おおむねやりたかったことが実現できました。
ありがとうございました。

ただ、新たに解決したいことが出てきたのでこちらに書かせていただきます。

1) 自動起動スクリプトと/xオプション指定のスクリプトの兼ね合いについて
自動起動スクリプト「ファイル一覧の選択変更後」を有効にしている場合、/iオプション付きかつ/xオプション付きでもう一つの秀丸ファイラを起動させたタイミングで下記のメッセージがポップアップしたりしなかったりします。
また、その際に新しく開いた側の秀丸ファイラーが異常終了したりしなかったりします(元のウィンドウには影響しません)。
この挙動をなんとかしたいのですが、まずは再現するかどうかをご確認いただけないでしょうか?
※秀丸ファイラーClassic Version 1.78 Beta 4 を利用しています

ポップアップタイトル: エラー
メッセージ: スクリプト実行中のため2重にスクリプトの実行はできません。


2)「タブごとのフォルダ枠」について
同設定項目は全ウィンドウ共通設定で、どのウィンドウ上で変更しても全てのウィンドウに対して即座に変更が反映されます。
また、同設定項目を ON→OFF に変更すると各フォルダ枠に設定されている親フォルダの情報が失われてしまい以後同設定をONにしても復元できません(ひとつひとつ手動で再設定する必要がある)。

普段は「タブごとのフォルダ枠」を ON で利用していて本件で開いた新規ウィンドウでは OFF で利用したいのですが、上記のとおりOFFにした場合のペナルティがあるためしかたなく表示したままにしています。

・そこで要望なのですが「タブごとのフォルダ枠」の設定を「タブの分割方向(*)」のように各ウィンドウで個別に持たせることは可能でしょうか?
  また、同設定項目の状態をスクリプトから読み取る手段の追加は可能でしょうか?
・あるいは、オプション > 全般 > ウィンドウ > ウィンドウ状態の詳細 > 2番目以降に起動したウィンドウ、の設定項目に「タブごとのフォルダ枠なし」を追加することは可能でしょうか?

(*) タブの分割方向については Config.splitMode で参照・設定が可能ですが、変更結果は他のウィンドウには影響しません。
余談になりますが、Config.splitMode はヘルプに明記されていないものの 3 を設定することで「田の字」になります。
一方で Command('タブの分割方向切り替え') は左右/上下切り替えのトグル動作しかできないようです。


それから素朴な疑問なのですが、新しいウィンドウを開く手段は下記のとおりいくつかありますが、何れの手段で開いたとしても「秀丸ファイラの2つ目以降のウィンドウ」として等しく扱われる認識で間違いないでしょうか?

・ウィンドウを開く手段
A: フォルダのコンテキストメニュー
B: フォルダツリーでフォルダをShift+クリック
C: iオプション付きで2つ目の秀丸ファイラを起動
D: num1=7としてopenメソッドを実行
[ ]
RE:10336 【要望】ウィンドウオープン時の自動起動スクリプトNo.10339
秀丸担当 さん 22/08/25 10:26 [ コメントを投稿する ]
 
自動起動と/xを両方したら、2重実行のエラーが出ることは確認できました。
異常終了は再現できなかったのですが、そうなってしまうとしたらバグということになります。
とりあえずエラーメッセージを出すこと自体があまりよくなさそうなので、何も出さないようにしてみます。

タブごとのフォルダ枠は、全てのウィンドウに反映されますが、反映しないように変更してしまってもいいかもしれません。
設定としては記憶され、次の起動から適用されるというのでもいい気がします。
設定なしでそのようにしてみようと思います。
スクリプトとして読み取る方法は無いですが、configオブジェクトにあるとしたら、現在の状態を表すものではなく、記憶されている設定を表すものになると思います。
2番目以降のウィンドウで出さない設定もあったらいいです。
splitModeの田の字は3でした。
[タブの分割方向切り替え]は左右/上下の切り替えだけになっています。これを変更する予定はいまのところ無いです。

2番目以降のウィンドウとして扱われるのは、言葉のままですが、既にウィンドウがあって、新しいウィンドウがもう一つできれば、2番目以降のウィンドウです。
操作はAは何かわからないですが、新しいウィンドウで開く操作であれば新しいウィンドウです。
Bは[新規タブ等]の設定で違います。
CやDは新しいウィンドウです。
[ ]
RE:10339 【要望】ウィンドウオープン時の自動起動スクリプトNo.10352
mac さん 22/08/29 20:02 [ コメントを投稿する ]
  お返事ありがとうございます。

エラーの再現確認ありがとうございます。
追加で調査した結果、ファイルフォーカス変更後に自動起動スクリプトの遅延時間経過前に秀丸ファイラーのダイアログを表示させ、遅延時間経過まで表示させ続けたケースでも再現することがわかりました。なお、この再現手段では異常終了することはありませんでした。
異常終了の要因ですが、もしかしたら/xオプションで指定したスクリプトにてNum1=5指定(新規分割
)によるOpenメソッド実行が関連しているかもしれません。そもそも本件問い合わせでやりたかったのは別ウィンドウでサブフォルダ群を一括でそれぞれ分割表示させることでしたが、サブフォルダが一つだけの場合はOpenコマンドを使わないからなのか、異常終了することはありませんでした。

タブごとのフォルダ枠については「設定が元ウィンドウとは関係なく裏で切り替わっている状態」になるのだとすれば、その後秀丸ファイラーを再起動させた際にひとつ目のウィンドウに「タブごとのフォルダ枠:非表示」が反映されてしまう気がします(事故の元)。
その場合「2番目以降のウィンドウで出さない設定」のほうが安全で使いやすい気がしていて、個人的にはこちら側を推したいです。

ウィンドウについては、手段を問わず2番目以降のウィンドウとして等価に扱われるとのことで理解しました。chromeブラウザー等ではプロファイルを指定して起動させると独立した別プロセスとして立ち上がるので、そのような扱いになってしまわないのかを気にしていましたが、杞憂だったようで安心しました。


よろしくおねがいします。
[ ]
RE:10339 【要望】ウィンドウオープン時の自動起動スクリプトNo.10353
mac さん 22/08/29 20:07 [ コメントを投稿する ]
  すみません。
補足です。

>秀丸ファイラーのダイアログを表示させ
と書きましたが、オプションダイアログ、新規フォルダ(ダイアログ)で実際に再現確認できています。
OSのプロパティダイアログでは再現しなかったので、秀丸ファイラーの任意のダイアログが対象になると思います。
[ ]
RE:10353 【要望】ウィンドウオープン時の自動起動スクリプトNo.10354
秀丸担当 さん 22/08/30 11:49 [ コメントを投稿する ]
  詳しい情報ありがとうございます。
二重実行のエラーは出さないようにしてみているのですが、異常終了するパターンがあって再現するということでしょうか。
そういうことだとしたら、起動時のopen(...,5);と自動起動を組み合わせてみたりしたのですが、再現できなくていまのところ不明です。
もしdumpが出力されたというようなメッセージが出ていたら、dumpを"taki@maruo.co.jp"まで送っていただけると助かります。
または、再現するスクリプトがあったら教えてもらえると助かります。
[ ]
RE:10354 【要望】ウィンドウオープン時の自動起動スクリプトNo.10355
mac さん 22/08/31 09:38 [ コメントを投稿する ]
  これまでの報告は V1.78β4 にて再現したものになります。(申し訳ありません。。。)

最新の V1.78β7 をインストールして、二重実行のエラーを通知するポップアップが発生しなくなったことを確認しました。
同ポップアップに付随して発生していた異常終了も、少なくとも上のツリーに記載した内容のスクリプトにおいて発生しなくなりました。


また、タブごとのフォルダ枠の表示・非表示切り替え操作が他のウィンドウに即時反映されなくなることも確認しました。
しかしながら、上のツリーに記載したとおり「見た目と設定が相違している状態」が発生する以上、秀丸ファイラー再起動時に意図せず親フォルダ情報が失われる事故の要因と成り得ます。
ここからはとりあえずお伝えしたくて書いているのでまだ検証できてはいませんが、下記のような手続きでその対策になるような気がしています。

<トリガースクリプト>
1) /savereg-only オプション付きで秀丸ファイラを起動([非表示]の設定が保存される)
2) /x /i オプション付きで秀丸ファイラを起動  ・・・新しいフォルダがレシーバーブスクリプトを伴って開く

<レシーバースクリプト>
1) タブごとのフォルダ設定を切り替え(表示→非表示)・・・元ウィンドウには影響しない
2) /restore-only オプション付きで秀丸ファイラを起動 ([非表示]の設定が復元される)・・・元ウィンドウ及びレシーバースクリプト実行中のウィンドウには影響しない

※/savereg-onlyでのファイル保存処理がトリガースクリプトの手続きとは非同期で行われるのだとすれば(この仮定はおそらくtrue)、レシーバースクリプト側での/restore-onlyでの読み出し処理に間に合うかどうか心配ではあります。


上記はうまくいったとしてもかなりアクロバットな手続きになってしまうので、下記についても引き続きご検討いただけるとありがたいです。
・オプション > 全般 > ウィンドウ > ウィンドウ状態の詳細 > 2番目以降に起動したウィンドウ、の設定項目に「タブごとのフォルダ枠なし」を追加


よろしくおねがいします。
[ ]
RE:10355 【要望】ウィンドウオープン時の自動起動スクリプトNo.10357
秀丸担当 さん 22/08/31 17:01 [ コメントを投稿する ]
   V1.78β7以降ではおそらく大丈夫のようで、詳しい状況のことありがとうございます。
2番目のウィンドウでの、タブごとのフォルダ枠なしのオプションをV1.78β8で追加してみています。
[ ]
RE:10357 【要望】ウィンドウオープン時の自動起動スクリプトNo.10360
mac さん 22/09/03 19:50 [ コメントを投稿する ]
  V1.78β8 のリリースありがとうございます。
さっそくインストールして下記にチェックを入れてみました。
・オプション > 全般 > ウィンドウ > ウィンドウ状態の詳細 > 2番目以降に起動したウィンドウ > タブごとのフォルダ枠なし

期待通り、新規ウィンドウでタブごとのフォルダ枠が非表示になり、元ウィンドウ側にも影響が出ることはなくとても利用しやすいです。
ありがとうございました!

--
ここからは余談になります。
前回お伝えした「/save-only 及び /restore-only による .hfcreg を介した設定復元手続き」ですが、自分の予想とは異なる結果になりました。
上記のとおりV1.78β8で新設いただいた設定項目で目的を達成できているのであまり突っ込んで検証はしていませんが、奇妙な挙動を示したので念のためお伝えするものです。
・/restore-only での設定復元結果は全てのウィンドウに即時反映される。
・新規ウィンドウ側のタイトルバーに表示されていた「(サブ)」の文字が消える。(全てのウィンドウが一つ目のウィンドウ扱いになっている???)
・復元元の設定はタブごとのフォルダ枠が「表示」のはずなのに、復元結果は「非表示」になる。
[ ]

[ 新規に投稿する ]