如何查看粘贴到 System.Windows.Clipboard 的应用程序?

How to check which application pasted to System.Windows.Clipboard?

我不是在 .Net 中编码,而是使用 PresentationCore 程序集中的 System.Windows.Clipboard 访问系统剪贴板以粘贴在 Excel 中复制的信息。

当 Excel 复制到剪贴板时,我可以使用 System`Windows`Clipboard`GetText[] 将其作为文本检索。此文本遵循我可以在我的代码(Wolfram 语言)中解析和使用的 TSV 文件格式。

有没有一种方法可以让我查询 System.Windows.Clipboard 以确定 Excel 是否是将其当前数据粘贴到其中的应用程序?

我想限制我代码中的粘贴操作,使其仅评估剪贴板上的数据是否来自 Excel。我查看了在线 MSDN 文档页面,但没有注意到可以提供此信息的方法。

您应该能够使用 GetText(TextDataFormat.CommaSeparatedValue) 来确定剪贴板内容是否实际上是 CSV。这样一来,您根本不必关心 Excel 是复制它,还是 Google Docs,还是 OpenOffice Calc。

System.Windows.Clipboard不追踪来源

您可以通过使用 Form.ActiveControl 查看 Excel 是否处于活动状态,然后监听 CTRL+C 命令或上下文菜单中的副本来解决此问题。因此,您不是在寻找复制数据的来源,而是在观察 Excel 以查看是否有任何数据被复制。

如果您不关心来源而只想要 TSV,您可以解析复制的数据以查看它是否是 TSV 并适当地处理它。