【问题标题】:How to capture paste event in c++如何在 C++ 中捕获粘贴事件
【发布时间】:2017-10-12 15:40:54
【问题描述】:

我知道我可以通过使用SetClipboardViewer 将窗口句柄添加到剪贴板查看器链或通过键盘挂钩来捕获 copy 事件。

但是当 paste 发生时似乎没有传播剪贴板消息(使用 ctrl+v、右键单击->粘贴或菜单编辑->粘贴。

还有其他方法可以捕获粘贴事件吗?

【问题讨论】:

  • 我不确定这是不是骗子,因为另一个问题是关于阻止粘贴。我们不知道为什么这个问题要检测粘贴。当问题结束时,我处于中间答案。我写的是:“没有可以挂钩的真正粘贴事件。粘贴是个别应用程序在访问剪贴板上的数据时可能执行的操作。由于某些应用程序访问剪贴板上的数据由于其他原因,系统无法知道何时发生粘贴。”
  • @AdrianMcCarthy:另一个问题是关于检测阻止粘贴。我对那个关于检测的问题给出的答案也同样适用于这个问题。这就是为什么我将其标记为重复。你写的答案也同样适用于另一个问题
  • @RemyLebeau 我找不到您所说的其他问题。您介意分享链接吗?
  • @ShameelMohamed 当我将这个问题作为重复项关闭时,它已被链接,此后该问题已被反转。这是链接:Clipboard viewer doesn't get paste notification
  • 没有。应用程序可以读取剪贴板内容以响应自定义按钮按下。或者完全没有用户交互。除非您准备好挂钩与读取剪贴板有关的所有系统调用,否则您无能为力。这就产生了一个问题:为什么您认为需要通知您有关剪贴板读取访问权限?

标签: c++ winapi clipboard paste


【解决方案1】:

没错,您无法通过查看剪贴板来检测粘贴。 复制到剪贴板是写操作,您可以在剪贴板查看器中看到(尽管您无法将它们与剪切区分开来)。

从剪贴板粘贴是读取操作,因此您在剪贴板查看器中看不到它们,即使看到了,如果没有实际粘贴,您也无法区分“特殊粘贴”中的粘贴和预览。

全局监控 WM_PASTE 可能会有所帮助。例如,使用记事本,您应该可以通过 Ctrl+V 粘贴和上下文菜单粘贴看到它。但有些应用程序不会使用此消息 - 他们没有义务这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多