问题标签 [idataobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何执行未标记为可序列化的对象的深层副本(在 C# 中)?
我正在尝试在 C# 中创建剪贴板堆栈。剪贴板数据存储在System.Windows.Forms.DataObject
对象中。我想将每个剪贴板条目 ( IDataObject
) 直接存储在通用列表中。由于位图(似乎)的存储方式,我认为我需要先执行深层复制,然后再将其添加到列表中。
我尝试使用二进制序列化(见下文)来创建深层副本,但由于System.Windows.Forms.DataObject
未标记为可序列化,因此序列化步骤失败。有任何想法吗?
delphi - 如何使用 Delphi 创建 IDataObject 实例?
此C++ 代码显示了如何使用 OLE 来模拟文件拖放以模拟“发送到...”操作。这将打开带有所选文件作为附件的标准邮件客户端,这是 mailto: 协议处理程序的一个非常有趣的替代方案。
在 Delphi 中创建 IDataObject 的必要实例的最佳(短而安全)方法是什么?
我在这里找到了一些代码,但也许有更好的解决方案。
excel - Office 剪贴板需要时间来显示更改
我在 Excel 中面临一个非常奇怪的问题。我已经覆盖了 CTRL+C 和 CTRL+V 键,在复制时,我将自定义 DataObject 放在包含 Excel 格式和自定义格式的剪贴板上。
我将我的数据复制到剪贴板,它被复制没有任何问题。我也可以在 Office 剪贴板中看到它。现在我从 Excel 外部(从记事本)复制一些文本并尝试将其粘贴到 Excel 中,但 Excel 粘贴了我从 Excel 工作表复制的先前数据。我正在使用 Worksheet.Paste(...) 方法进行粘贴。
粘贴多次后,Excel 开始粘贴新数据,但未修复。有时我根本看不到新数据,尽管 Windows 剪贴板查看器和 Office 剪贴板在我从记事本复制后都会显示新数据。
知道 Office 为什么要花时间粘贴这些新数据吗?
copy - File/Folder right-click 'Copy' action, how does it copy to clipboard?
I'm making an app that has some functionality of windows explorer. Actually I have to make a copy/paste actions. My question is what does windows copy to clipboard, when I'm right-clicking the file and the choose 'Copy'?
Here's my Paste code:
windows - IDataObject 或 IStream 作为 shell 复制的源——没有 shell 扩展
我有一个程序可以将文件传输到 Windows 计算机(以及许多其他东西)。我们有两种传输方式:
- 在我们的菜单中找到一种易于发现的“发送文件”方法,但它不提供进度条或可取消性
- 较少发现的拖放和剪切/粘贴方法,通过 Windows 外壳提供进度条和可取消性
我们希望获得带有方法 1 的取消按钮的 Windows shell 进度对话框。
所以我想通过 SHFileOperation(或 IFileOperation)使用我的 IDataObject(或它的 IStreams)的源和磁盘文件夹的目标(我将指定)进行 shell 复制。
我们已经有一个 IDataObject 的实现,它通过 CFSTR_FILEDESCRIPTOR、STGMEDIUM、IStream 等公开我们的虚拟文件。这非常有效。我们希望尽可能多地利用这种实现。
我看到带有命名空间扩展的 Windows shell 扩展将是一种明显的方式,可以将我的虚拟文件“挂载”到 shell 项中以充当副本的源,但我拒绝触摸注册表或以其他方式弄乱它们上持久的任何东西系统。我看不到暂时安装虚拟物品的方法。
我已经有工作代码来启动一个资源管理器窗口到目标目录,所以一个明显的“最后手段”类型的解决方案是以编程方式调用拖放操作,我有代码来欺骗 Windows 做大部分的事情,但如果我忽略了一种更优雅(并且更面向未来)的方法,我宁愿不去那里。有任何想法吗?
c# - IDataObject.GetData() 总是在我的类中返回 null
我有一个我标记为 [Serializable] 的类,我试图通过剪贴板进行复制。调用 GetData() 始终返回 null。
复制代码:
粘贴代码:
MyClass 实际上是一个派生类。它和它的基础都被标记为 [Serializable]。我用一个简单的测试类尝试了相同的代码,它起作用了。
MyClass 包含 GraphicsPath、Pen、Brush 和值类型数组。
mfc - 从 Shell 运行/帮助创建 DataObject (MFC C++)
我需要帮助来创建一个 IDataObject 以启用这 2 个项目(运行和帮助)的拖放。例如,我需要像 Windows 开始菜单那样做。
运行它们我使用这些
你们能帮帮我吗?
PS:我也需要带有图像图标的拖动
编辑[已解决]
运行:
c++ - 从剪贴板获取多个 Outlook 附件
我正在尝试从剪贴板获取多个 Outlook附件。
当用户选择多个附件并将它们放置在剪贴板中(或拖动它们)时,IDataObject
正在创建并放置在剪贴板中。
我知道可以在包含虚拟对象名称的IDataObject
using中找到文件名。CLIPFORMAT CFSTR_FILEDESCRIPTOR
另外,据我了解,文件内容是使用CLIPFORMAT CFSTR_FILECONTENTS
. 但是当我这样做时,我只得到一个文件,我不明白如何获取已复制到剪贴板的其他文件。
我发现使用该lindex
成员FORMATETC
可以获取其他文件,但由于某种原因它不起作用。
谁能解释或举个例子我怎样才能得到其他附件(更喜欢C++)?
c# - 检查剪贴板是否包含图像或图像文件
我想检查剪贴板是否包含图像或图像格式的文件。我想做这样的事情:
我被告知要使用 IDataObject,但是使用它 - 我将如何检查它是否是一个图像文件?
如果您是来自网络的图像,我的代码有效right click > copy
,但如果它来自我的文档,则它不起作用。任何帮助,将不胜感激
谢谢
vb.net - 使用子类 DataObject 作为剪贴板 DataObject
当我尝试以下结果时,结果出乎意料。任何想法将不胜感激!
myRetrievedObject2 什么都不是
Write 语句的输出是:“System.Windows.Forms.DataObject”。不应该是“DataObjectSub”吗?我错过了一些明显的东西吗?
按要求编辑:
在拖放操作的情况下,DataObject(实现 iDataObject)再次被使用,可以这样做:
稍后...在 DragOver 事件处理程序中:
运行良好,myRetrievedObject1 和 myRetrievedObject2 都不是 Nothing。两个检索到的对象的类型都是 DataObjectSub。
感谢您的任何想法和耐心!:)