我有一个小程序正在监听图像的剪贴板(钩子)。如果通过ctrl + c等存储或复制图像,我的程序会自动将图像粘贴到打开的文档doc。
代码:
if (Clipboard.ContainsImage())
{
IDataObject obj = Clipboard.GetDataObject();
if (obj.GetDataPresent(DataFormats.Bitmap))
{
Microsoft.Office.Interop.Word.Range range = thefile.Bookmarks.get_Item(@"\endofdoc").Range;
range.Paste();
newdoc.Selection.EndKey(WdUnits.wdStory);
}
}
我只是不明白为什么某个应用程序中的文本被复制到doc,实际上我只是在寻找位图数据格式(基于我的代码)。有没有办法检查被复制的数据是真的是图像还是文本?我没有问题做printcreen但是每次我从某个应用程序复制文本(我相信在ctrl + c之后现在存储在剪贴板中),文本被认为是图像?
答案 0 :(得分:0)
我认为原因是剪贴板可以同时包含各种格式数据,例如文本和位图。
因此,当您运行range.Paste()
并且剪贴板包含文本和位图数据时,将复制文本数据。
为避免出现这种意外行为,您只需通过调用Clipboard.GetImage()
从剪贴板获取图像数据,然后将其粘贴到您的文字doc。
不幸的是我无法找到任何简单的方法,但this answer可能会有所帮助(即将剪贴板图像数据写入文件,然后调用Shapes.AddPicture
以显示图像word doc)。