【问题标题】:How to check whether data gets inserted into ClipBoard is from PrintScreen?如何检查插入剪贴板的数据是否来自 PrintScreen?
【发布时间】:2015-12-15 07:44:38
【问题描述】:

我已经编写了 C++ dll。在这个 DLL 中,我连接了两个 WIN API,GetClipboardData 和 SetClipboardData。 所以我想检查SetClipboardData中要插入剪贴板的数据是否来自PrintScreen?

在 SetClipboardData WIN API 中,如何确定数据是否来自 PrintScreen?

-谢谢 阿吉特

【问题讨论】:

  • 您可以检查数据中是否包含与屏幕分辨率相同的CF_DIB?或者只是挂钩 PrintScr 键。
  • 你不能可靠地做到这一点。信息不存在。为什么要关心数据的来源?
  • 对我来说听起来像是XY problem。你真正想解决什么问题?
  • 我只想在某些文件打开时阻止 PrintScreen。我尝试了 SetWindowsHookEx() 来回键盘挂钩。但它不适用于 32 位进程的 64 位机器。

标签: c++ winapi clipboard printscreen


【解决方案1】:

你无法确定。但是如果剪贴板包含 BITMAP 和 DIB,不包含 TEXT,并且......对 GetClipboardOwner 的调用返回 NULL,那么这是一个不错的选择。挂钩 PrintScreen 键可能会有所帮助,但我只会将其用于关联。即记下按下 PrintScreen 时的时间戳,记下剪贴板事件的时间戳,如果它们关闭,则很可能剪贴板上的位图(其所有者为 NULL)是由 PrintScreen 键生成的。

【讨论】:

    猜你喜欢
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    相关资源
    最近更新 更多