【发布时间】:2019-12-02 20:48:45
【问题描述】:
我的应用程序在 VirtualUI 下运行。因为它创建了一个远程会话,所以剪贴板值有时存储在服务器的剪贴板中,而其他时间存储在客户端的剪贴板中存在问题。
行为取决于用户复制/粘贴的方式: - Ctrl+C/V 有效,因为 VirtualUI 能够捕获键盘事件,但是; - 右键单击 + 复制/粘贴不起作用,环境无法正确捕获事件并且值存储在错误的剪贴板中,导致在某些情况下复制不同的值并粘贴不同的值(如果用户使用正确的 clisc + Copy 然后Ctrl + V - 或其他方式)
有没有办法在 TEdit 右键单击的默认弹出菜单上禁用或隐藏复制和粘贴项目?
到目前为止,我们已经联系了 VirtualUI 开发人员,他们确认问题存在,但他们无能为力。这就是我们想出在所有控件的默认弹出菜单上隐藏复制/粘贴项目的想法的地方。
目前还没有代码,因为我们甚至不知道它是否可能
所需的解决方案是默认的 TEdit(或任何其他控件)弹出菜单,没有复制和粘贴项目。
【问题讨论】:
-
用于 api 编辑控件的 VCL 包装器,因此没有特定于 Delphi 的内容。对于 api 级别的解决方案,请参阅:stackoverflow.com/questions/32991402/…。
-
更简单的方法是将空弹出窗口附加到控件。那么剩下的唯一用途就是通过键盘了,这至少是一致的。
-
VirtualUI 开发人员声称他们无能为力的说法是错误的。许多类似的程序使用各种方法将客户端和服务器剪贴板的内容保存在 snyc 中。最流行的是在客户端和服务器端跟踪剪贴板内容的变化,然后更新另一个以使其内容匹配。