1

まず最初に、この問題はCitrix XenAppシームレスモードで作業しているときにのみ発生します(つまり、実際のアプリは一部のcitrixホストで実行されていますが、自分のデスクトップにあるものとしてシミュレートされています)。私もCitrixサポートでこれを取り上げますが、誰かが以前にこのような問題に直面した場合に備えて、グループをポーリングしたかっただけです。

Winforms NotifyIconを使用して、マウスがクリックされるまでシステムトレイに常駐するWPFアプリがあります。Citrixシームレスモードでは、ユーザーがシステムトレイのアイコンをクリックすると、ポップアップが点滅し、すぐに自動的に閉じます。

ポップアップウィンドウは、StaysOpenをFALSEとして作成したバニラウィンドウであり、他のすべての環境でも同じように機能します。

助言がありますか ?これは私がこれまでに気づいたことです:

  1. StaysOpenをtrueとして使用すると、ウィンドウは開いたままになります。しかし、フォーカスを失ったときに手動でウィンドウを閉じる方法がありません。LostFocusイベントは、ユーザーが外側をクリックしたときにポップアップで発生しません。
  2. citrixシームレスモードでは、MouseEnterイベントがキャプチャされますが、MouseLeaveはキャプチャされないため、ユーザーのマウスがウィンドウの外にX秒間いる場合にウィンドウを閉じるというアプローチは実現できません。
  3. StaysopenをFALSEとしてポップアップを開始し、2秒後にstaysopenをリセットして、ポップが固定されるようにする回避策を試しました。動作しますが、タイマーがヒットするとすぐにStaysOpenをFALSEに設定すると、ポップアップが自動的に閉じます。
  4. これらすべての回避策がないと、ユーザーがウィンドウが消える前にすばやくクリック(左クリック)すると、ポップアップが表示されたままになるため、ポップアップが開いたときにマウスクリックをシミュレートする方法をいくつか試しましたが、それでもカットされません。

ありがとう

4

1 に答える 1

0

この問題を回避するためにアプリを微調整するための具体的なアドバイスを提供することはできませんが、ハンマーのアプローチでは常に非常に大きな打撃を受けます。つまり、アプリの消費者にアプリケーションのシームレスを無効にするように伝えます。

http://support.citrix.com/article/CTX116357/

更新: オリジナルのシームレス開発者に ping を打ったところ、シームレスがクライアントとサーバー間で必要なすべてのマウス メッセージを正しくルーティングしていないバグのようだと彼は言いました。これを診断する最善の方法は、XenApp サーバーとクライアントで Spy++ ツールを実行し、それぞれのメッセージを比較して、どのメッセージが翻訳されていないかを特定することだと彼は言いました。これは本物のバグのように聞こえるため、Citrix サポートにサポート チケットを発行し、バグを再現できるサンプル アプリを提供することをお勧めします。

于 2012-10-17T06:09:54.507 に答える