1

首先,此问题仅在 Citrix XenApp 无缝模式下工作时发生(简而言之,这意味着实际应用程序正在某个 citrix 主机上运行,​​但它被模拟为驻留在您自己的桌面中)。我也会与 Citrix 支持一起讨论这个问题,但只是想对小组进行民意调查,以防以前有人遇到过这样的问题。

我有一个 WPF 应用程序,它使用 Winforms NotifyIcon 驻留在系统托盘中,直到单击鼠标。在 Citrix 无缝模式下,当用户单击系统托盘中的图标时,弹出窗口会闪烁并立即自行关闭。

弹出窗口是一个普通的窗口,使用 StaysOpen 创建为 FALSE,并且在所有其他环境中都一样。

有什么建议么 ?这是我到目前为止注意到的:

  1. 如果我将 StaysOpen 设为 true,则窗口将保持打开状态。但是当它失去焦点时,我没有办法手动关闭窗口。当用户在外面点击时,LostFocus 事件不会在弹出窗口中触发。
  2. 在 citrix 无缝模式下,会捕获 MouseEnter 事件,但不会捕获 MouseLeave,因此如果用户鼠标在窗口外 X 秒,则无法实现关闭窗口的方法。
  3. 尝试了将 Staysopen 设置为 FALSE 启动弹出窗口的解决方法,然后在 2 秒后重置保持打开状态,以便弹出提示。它可以工作,但是一旦我将 StaysOpen 设置为 FALSE,一旦计时器被击中,弹出窗口就会自行关闭。
  4. 如果没有所有这些解决方法,如果用户在窗口消失之前快速单击(左键单击)窗口,弹出窗口就会粘住,所以我尝试了几种方法来模拟鼠标在弹出窗口打开时的点击,但这也没有削减它。

谢谢

4

1 回答 1

0

我无法为您提供有关调整您的应用程序以解决该问题的具体建议,但是使用锤子方法总是会给您带来很大的打击,即告诉您的应用程序的消费者为您的应用程序禁用无缝:

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

更新:我对原始的无缝开发人员进行了 ping 操作 - 他说这听起来像是一个 bug,其中无缝没有正确地在客户端和服务器之间路由所有必要的鼠标消息。他说,诊断此问题的最佳方法是在 XenApp 服务器和客户端上运行 Spy++ 工具,然后比较双方看到的消息,以确定哪些消息没有被翻译。由于这听起来像是一个真正的错误,因此最好的办法是向 Citrix 支持提出支持请求,并为他们提供可以重现该错误的示例应用程序。

于 2012-10-17T06:09:54.507 回答