エラー表示について

  1. どうもお世話になってます

    画像 https://imgur.com/w354asA

    ここ3ヶ月ほど前から
    Firefoxを使ってるとたまに
    Meryでクリップボードのエラーが出るようになりました(画像上)
    多分クリップボードの競合で出でるのではないかと思いますが
    たまにですしそれ自体はいいのですが
    稀にエラーのウインドウがMery本体の裏に行くことがあり
    そうなるとMeryの操作全てが出来ず
    本体最小化してエラーウインドウを前面にとか出来ないのでプロセス終了してます
    これ常に最前面に出来ないでしょうか

    もう一つエラー(画像下)
    これはなんのエラーなんでしょうか
    保存は出来てるみたいです
    極稀(年2、3回位)に全て保存して閉じるを使った時に出ます
    普段使うことが多い上書き保存の時は出たこと無いです
    何かUSBメモリのテキスト時のみ(特定のてきすとではない)出てる気がします

    よろしくお願いします

     |  kiyohiro  |  返信
  2. ご報告ありがとうございます。

    クリップボードを破壊して検証してみましたが、エラーメッセージは出るものの、エラーのウィンドウが Mery 本体の裏に行くという現象は再現されませんでした。

    ちなみに、エラーメッセージなどのダイアログが表示されると、他のウィンドウが操作できなくなるというのは既知の問題であり、開発環境 (Delphi) の仕様によるもので、現在のところ対策はありません。

    > 本体最小化してエラーウインドウを前面にとか出来ないのでプロセス終了してます
    > これ常に最前面に出来ないでしょうか

    Mery ではエラーメッセージなどのダイアログの表示時に、できるだけそのウィンドウを最前面に持ってくるようにすることで上記の問題を回避しています。

    しかしながら、他のアプリケーションとの競合など、環境に依存する可能性は考えられるので、常駐アプリでお気づきの点や、導入されているプラグインやマクロ、具体的な再現状況など、ヒントになりそうなことがありましたら教えていただけると調査の助けになります。

    また、エラーのダイアログなどによって Mery 本体が操作不能になってしまった場合、Alt + スペース キーを押すと [移動] というメニューが表示されますので、[移動] を選択し、キーボードかマウスでエラーのダイアログをクリックできる位置に移動できるかもしれません。

    > これはなんのエラーなんでしょうか
    > 保存は出来てるみたいです
    > 極稀(年2、3回位)に全て保存して閉じるを使った時に出ます

    これは、Mery がクラッシュや強制終了などによって閉じたとき、バックグラウンドにプロセス (Mery.exe) が残った状態のまま、もう一度 Mery を起動しようとしたときに発生するエラーの可能性があります。

    その場合、タスクマネージャーから Mery.exe のプロセスをきちんと終了させてから起動すると大丈夫だと思います。

     |  Kuro  |  返信
  3. その後、引き続き検証をしているのですが、追加で以下の点につきまして詳細な情報をいただけると助かります。

    (1) クリップボードのエラーについて、Mery の [クリップボード履歴] が有効になっているかご確認いただけますか?

    (2) もし (1) に該当する場合、[History] セクションの Mery.ini 内で、クリップボードの監視遅延 (ClipbrdDelay=ミリ秒) を設定していますか?その値がある場合、その数値も教えていただけますか?

    (3) 同じく (1) に該当する場合、他のアプリでクリップボードを監視するためのアプリを導入しているでしょうか?もしそのようなアプリがある場合、そのアプリの名前も教えていただけますか?

    (4) ダイアログが Mery 本体の裏に行く現象は、クリップボードのエラーだけですか?

    → [クリップボード履歴] を使用している場合、Mery は他のアプリによるクリップボードの変更も監視します。

    そのため、他のアプリがアクティブであり、かつ Mery が非アクティブな状態でエラーが発生すると、Mery 側からアクティブなウィンドウが取得できず、今回の現象が発生するのかもしれません。

    このケースは検証が難しいですが、クリップボードは健全な状態で、Mery と他のアプリが同時にクリップボードにアクセスする場面で再現できる可能性が考えられます。

    それと、もうひとつの件ですが、

    > 極稀(年2、3回位)に全て保存して閉じるを使った時に出ます
    > 普段使うことが多い上書き保存の時は出たこと無いです

    すべて閉じるとき、とのことなので、以下の原因も考えられます。

    ワークスペース機能を有効にしている場合、Mery はすべて閉じるときに、バックグラウンドでワークスペースの保存を行います。

    この処理中、Mery.exe のプロセスが残るため、すぐに再度 Mery を起動すると同様のエラーが発生する可能性があります。

    もしもこれが当てはまる場合、Ver 3.2.8 あたりでこの問題に対処しているので、最新版の Mery にアップデートすることで改善されるかもしれません。

    お盆なのに台風ですね。どうぞお気をつけて、安全第一でお過ごしくださいませ。

     |  Kuro  |  返信
  4. 画像 https://imgur.com/u5Z1aBg
    普段こんなレイアウト使ってます(画像一番上)
    常駐アプリはだいたい写ってるこの3つFirefox、Mery、annsFM(ファイラー)
    とメーラー、ウイルス対策アプリ、秀丸スタートメニュー、秀丸ランサムガード
    マクロは名称でわかると思いますが単純な物だけです(画像2、3)
    プラグイン(画像4)
    Win10x64環境、MeryPortable-x64-3.5.9.zip
    (プロ生ちゃんエディション v2.8.2からバージョンアップを続けてます)

    Firefoxでクリップボードにコピーして
    Meryをマウスクリックして切り替え、貼り付けをしてますが
    たまに切り替えた時にエラーウインドウが出てる時があります
    稀に切り替えてもMeryの操作が全て出来ず
    エラーウインドウも見えずタスクリストにそれっぽいのがあり
    多分裏側に行ってるのではないかと
    ねらって再現は出来ないです
    1日使ってエラーウインドウは多くて10回ぐらい
    裏に行ったのは3ヶ月前からエラーウインドウが出始めてから2回だけです

    (1) クリップボードのエラーについて、Mery の [クリップボード履歴] が有効になっているかご確認いただけますか?
    有効
    (2) もし (1) に該当する場合、[History] セクションの Mery.ini 内で、クリップボードの監視遅延 (ClipbrdDelay=ミリ秒) を設定していますか?その値がある場合、その数値も教えていただけますか?
    無し
    この設定知らなかったのですが使えば効果ありそうですね試してみます
    (3) 同じく (1) に該当する場合、他のアプリでクリップボードを監視するためのアプリを導入しているでしょうか?もしそのようなアプリがある場合、そのアプリの名前も教えていただけますか?
    無し Firefoxで監視してるかも?
    (4) ダイアログが Mery 本体の裏に行く現象は、クリップボードのエラーだけですか?
    はい、そうです

    > ワークスペース機能を有効にしている場合、Mery はすべて閉じるときに、バックグラウンドでワークスペースの保存を行います。
    使ってないです
    すべて閉じるの後ダイアログが出ました

    Mery.log
    2023/08/13 11:39 コントロール '' は親ウィンドウを持っていません
    2023/08/13 11:40 コントロール '' は親ウィンドウを持っていません
    2023/08/13 11:40 コントロール '' は親ウィンドウを持っていません
    2023/08/13 11:44 コントロール '' は親ウィンドウを持っていません

    4つあるのは多分okやバツボタンで閉じても再度出て最後プロセス終了で閉じました

    よろしくお願いします

     |  kiyohiro  |  返信
  5. 情報ありがとうございます。

    > たまに切り替えた時にエラーウインドウが出てる時があります

    なるほど、そのような状況ですと、[クリップボード履歴] が原因の可能性が高いですね。

    いただいたスクリーンショットから判断するに、クリップボード履歴プラグインも使用されているようですね。

    もし、このエラーがクリップボード履歴プラグインによるものであれば、Mery 本体での対処は難しいのでご了承ください。

    > この設定知らなかったのですが使えば効果ありそうですね試してみます

    そうですね。Mery 標準の [クリップボード履歴] を有効にしている場合、このオプションを使うことで、クリップボードへのアクセスを遅延させることができ、他のアプリとの競合を軽減できるかもしれません。

    > 無し Firefoxで監視してるかも?

    もし、Mery 標準の [クリップボード履歴] とクリップボード履歴プラグインの両方が有効になっている場合、両者の競合が問題の原因となっている可能性も考えられますね。

    ひとまず、Mery 標準の [クリップボード履歴] を使用して、提供いただいた情報をもとに、こちらでも検証してみます。

    > 使ってないです
    > すべて閉じるの後ダイアログが出ました
    > Mery.log
    > 2023/08/13 11:39 コントロール '' は親ウィンドウを持っていません

    了解しました。その他の可能性としては、Ver 2.8.2 に同梱されているプロ生ちゃんプラグインをそのまま使用している場合、少し怪しいかもしれません。

    以前、プロ生ちゃんプラグインを入れてるとごく稀に「コントロール '' は親ウィンドウを持っていません」のエラーが出たことがあって、プロ生ちゃんプラグイン Ver 1.0.12 で修正したような記憶があります。

    プロ生ちゃんプラグインのバージョンは [ツール] > [プラグイン] > [プラグインの設定] から [KureiKei] を選択すると確認できます。

    引き続き、私のほうでも様子を見てみますね。

     |  Kuro  |  返信
  6. その後、引き続き検証していて、現象を再現することはできました。

    まず、いただいたスクリーンショットのエラー ダイアログは、おそらくクリップボード履歴プラグインが表示しているエラー ダイアログだと思われます。

    Mery 標準の [クリップボード履歴] は、クリップボードにアクセスできなくてもエラーを表示せず、単にクリップボードのデータを取得しないだけの挙動でした。

    また、クリップボードを意図的に破壊し、Mery 本体から強制的にエラーを引き起こした場合、エラー ダイアログのタイトルバーは「ファイル名 - Mery」という形で表示されます。

    【画像】https://imgur.com/12f8diH

    一方、プラグインが表示するエラーでは、タイトルバーは「Mery」とのみ表示されます。

    いただいたスクリーンショットのタイトルバーは「Mery」のみであるため、クリップボード履歴プラグインによるエラーの可能性が高いと考えられます。

    私も同様の環境でクリップボード履歴プラグインをインストールして確認したところ、同じエラーが再現されました。

    したがって、Mery 本体ではなく、プラグインを開発された方に対応をお願いするしかないかと思います。

     |  Kuro  |  返信
  7. 検証ありがとうございます
    クリップボード履歴プラグインが原因でしたか
    実際使ってるのは本体の方です
    プラグインはうろ覚えですが本体の方廃止の話題とかあったからのような気がします
    ちなみに両使いでもClipbrdDelay=200でエラーは出なくなりました
    あとプロ生ちゃんプラグインはv1.0.12でした

     |  kiyohiro  |  返信
  8. 訂正
    ClipbrdDelay=200
    では出たので
    300にしたんでした

     |  kiyohiro  |  返信
  9. ご返信ありがとうございます。

    > 実際使ってるのは本体の方です

    そうですか。プラグインと両方を有効にしていると、競合が生じる可能性がありますし、メモリも多く消費されてしまうことがあります。使っていない方は無効にすることをお勧めします。

    > プラグインはうろ覚えですが本体の方廃止の話題とかあったからのような気がします

    そうですね。Windows 10 以降ではクリップボード履歴が OS の標準機能として組み込まれており、Mery の機能を使用する必要がなくなりました。

    ただし、Windows XP のユーザーさんからは依然としてご要望があり、そのためにクリップボード履歴の機能は残されている状況です。

    Windows 10 以降をお使いの場合、[Windows キー] + [V] を使うことでクリップボード履歴を利用できます。

    > あとプロ生ちゃんプラグインはv1.0.12でした

    了解しました。となると、発生条件は今のところ分からないですね。私も昨日と今日、検証を行いましたが、再現できず、現時点では解決策が見当たりません。

    また発生することがあって、特定の手順やヒントが見つかる場合、ぜひその情報を教えていただければと思います。

    お手数おかけしますが、今後も何かお気づきの点がありましたらお知らせいただけると助かります。

     |  Kuro  |  返信
  10. 回答ありがとうございます
    > 使っていない方は無効にすることをお勧めします。
    > ただし、Windows XP のユーザーさんからは依然としてご要望があり、そのためにクリップボード履歴の機能は残されている状況です。
    そうですね私もxpは使ってます
    本体のクリップボード履歴の機能が残ってるうちはプラグインは無効にします

    スイマセンもう一つなんか出ました
    画像 https://imgur.com/xq0gUb2
    タスクバーのプレビュー表示の左側アイコンだけの表示
    これも稀に出ますがなんでしょうか
    これは画面上にウインドウなど無しタスクリストにも無し
    左側だけ消そうとバツボタンで終了しようとすると本体終了
    左側だけ残ることも
    再現方法不明

     |  kiyohiro  |  返信
  11. ご報告いただき、ありがとうございます。

    > タスクバーのプレビュー表示の左側アイコンだけの表示
    > これも稀に出ますがなんでしょうか

    クリーンな環境では同様の現象は再現されないようです。このことから、プラグインが影響している可能性が考えられます。

    多くのプラグインが導入されているようですので、現状では原因の特定は難しいかと思われますが、もし再現手順がわかりましたら教えていただけると助かります。

    私のほうでも引き続き検証を行いまして、何かわかったらお知らせいたします。

     |  Kuro  |  返信
  12. 引き続き検証していますが、タスクバーに表示されるアイコンだけのウィンドウの存在を確認しました。

    いただいたスクリーンショットをもとに、各プラグインを順に導入して検証を行いました。その結果、MeryClipHistory プラグインが生成しているウィンドウの可能性が考えられます。

    MeryClipHistory プラグインを導入している場合、有効/無効にかかわらず、Mery を起動する際にタスクバーにアイコンだけのウィンドウが一瞬表示され、その後消えてから Mery が起動する現象を確認しました。

    【参考動画】https://imgur.com/a/964MnMB

    MeryClipHistory プラグインのソースコードを調査したところ、Mery の起動時にダミーのウィンドウを生成し、それを Mery のアプリケーションに組み込んでいることがわかりました。

    以下のようなコードが該当します。

    Application.Handle := hwnd;
    FormHistory := TFormHistory.Create(Application);
    

    このコードにより、ダミーのウィンドウは Mery 本体の Application の下に生成され、Mery 本体のウィンドウとして組み込まれる仕組みとなっています。

    通常、ダミーのウィンドウは Mery の起動に合わせて自動的に非表示になるようですが、何らかの原因でそのウィンドウが非表示にならないことがあるか、または何らかの原因でそのウィンドウが表示されてしまうことがあるか、といった可能性が考えられます。

    検証に使用したのは MeryClipHistory Ver 1.01 ですが、バージョンによる違いもあるかもしれません。

    > 左側だけ消そうとバツボタンで終了しようとすると本体終了
    > 左側だけ残ることも

    MeryClipHistory プラグインは Mery とアプリケーションのハンドルを共有するように記述されているため、ダミーのウィンドウを閉じるとプラグインがクラッシュし、Mery のアプリケーションごとクラッシュしてしまう可能性が考えられます。

    また、クリップボード履歴プラグイン (ClipboardHistory) のほうもダミーのウィンドウを生成しますが、こちらは Mery のアプリケーションには組み込まれず、タスクバーに表示されることはないようです。

    以下のようなコードが該当します。

    Application.Handle := hwnd;
    History := THistory.Create(nil);
    

    このコードにより、ダミーのウィンドウの親が nil となり、Mery 本体のウィンドウとしては表示されないようになっています。

    このような結果となりますが、他の開発者が制作したプラグインについては、私のほうでは詳細はわからないため、サポートの対象外とさせていただきます。ご了承ください。

     |  Kuro  |  返信
  13. 検証を続けていましたところ、先述した内容について、一部訂正がありました。

    ダミーのウィンドウの親の指定が Application か nil によって、Mery 本体のウィンドウとして表示されるか否かが異なると記載しましたが、実際には、Application.Handle := hwnd; を使用して Mery 本体とアプリケーションのハンドルを共有するだけでも、Mery 本体のウィンドウとして表示される場合があることが分かりました。

    したがって、この動作はクリップボード履歴プラグイン(ClipboardHistory)のダミーのウィンドウに関連している可能性も考えられます。

    アプリケーションのハンドルを共有するかどうかは、プラグインの仕様に依存しますので、必要に応じてご対応いただければと思います。

     |  Kuro  |  返信
  14. 引き続き検証ありがとうございます
    立て続けで起こりスクショが取れたので投稿したのですが
    困るのはエラーダイアログが裏側に行くのだけで後は
    いずれも稀で特に支障がないものばかりで現状問題ないです
    エラーダイアログもプラグインオフと本体遅延設定で出なくなり
    結果裏側に行く心配も無くなりこちらも問題無くなりました
    (確認するとプラグインにも遅延設定ありました)
    今後悪化するようならそれぞれのプラグイン作者さんに報告することにします
    色々ありがとうございました

     |  kiyohiro  |  返信
スポンサーリンク