Articles of 拖放

覆盖shell扩展的拖放

我正在C ++中使用ShellExtension代码。 我正在创build一个虚拟驱动器。 其中代表networking中的某个存储库。 我现在想要的是启用拖放function到这个驱动器。 我想让用户拖动文件到该虚拟驱动器,然后我必须能够抓住该事件,以便我可以执行我的自定义操作。 到目前为止,我无法find任何此类事件或接口。 我尝试使用IDragAndDrop接口,但其rgs文件没有正确注册。 有什么出路吗?

在我的delphi项目中拖放不起作用

这个话题显然在这里一遍又一遍地被打了,但是现在我从我的观点来看只是没有办法。 操作系统: Windows XP SP3 所以,这里是我在我的应用程序中使用的RichEdit的拖放示例 : procedure TForm1.AcceptFiles( var msg : TMessage ); // or TWMDROPFILES const cnMaxFileNameLen = 255; var i, nCount : integer; acFileName : array [0..cnMaxFileNameLen] of char; begin // find out how many files we're accepting nCount := DragQueryFile( msg.WParam, // or msg.Drop $FFFFFFFF, acFileName, cnMaxFileNameLen ); // query Windows […]

如何拖拽大量的文件而不消耗系统资源?

我正在处理的程序中的一个function是将对象从其主窗口拖放到Windows资源pipe理器中作为文件。 为此,我们重写COleDataSource::OnRenderGlobalData() ,当格式为CF_HDROP ,我们将每个对象保存为一个文件。 当对象数量很小时,这工作正常。 但是,由于我们正在努力支持企业级别的对象,因此当用户试图将大量对象从我们的应用程序拖放到Windows资源pipe理器中时,我们看到很大的延迟,有时会导致挂起或最终崩溃。 我的猜测是,这是因为OnRenderGlobalData()被调用了很多次,当然,每次必须遍历被拖动的对象并将它们保存为文件。 我正在研究覆盖OnRenderFileData()的想法,但问题是它一次只处理一个文件。 有什么办法可以加快我们的应用程序,当用户试图拖动大量的对象到Windows资源pipe理器,最好是通过将保存循环移动到只能执行一次,当实际下降发生的地方?

HTML5在窗口之间拖放

是否有HTML5拖放function或/和文件API拖动JPG图像从一个窗口到另一个? 这个想法是,我可以从Facebook拖动和图像到一个不同的浏览器的窗口与自定义HTML将获得该图像。 或者,至less,从桌面拖到浏览器的方式? 非常感谢

如何在打开对话框时禁用拖放操作

我正在处理一个大的应用程序,并添加一些拖放function。 具体来说,我允许用户拖放一个文件到主窗口打开文件。 问题是当主窗口显示一个对话框(例如,当前打开的文件中的项目的属性窗口)时,拖放操作仍然允许发生。 如果主窗口显示一个模式对话框,我宁愿不允许发生这种情况。 这是因为在打开对话框时在应用程序中加载新文件可能会导致程序崩溃:调用对话框的代码并不期望在对话框打开的情况下打开文件被更改(这就是为什么对话框是模态…)。 主要的应用程序是用C ++编写的,但是我发布了一个C#示例。 症状/行为在两个平台上都是一样的,但我可以用更less的代码用C#展示它。 我对这两种语言/平台都非常熟悉,所以我可以根据需要将任何答案翻译成适当的语言。 为了演示我的示例代码的问题,编译并运行以下C#代码。 它会创build一个“主窗口”,这是一个有效的下降目标。 将文件从Windows资源pipe理器拖放到主窗口上:您应该看到“已删除”消息框。 现在,点击表格上的buttonpopup一个对话框。 再次尝试在打开对话框时将文件拖放到主窗口上。 请注意,即使打开了模式对话框,也可以进行放置。 当对话框打开时,我怎样才能防止这种情况发生? 显而易见的答案是在打开对话框时暂时将AllowDrop设置为false。 问题是主应用程序非常大,所以有很多地方打开对话框。 find打开对话框并添加此代码的每个地方都很困难。 此外,每个开发人员在每次打开模式窗口时都需要知道如何执行此操作; 每个人都不可能记得。 我担心这不是一个很好的解决scheme。 当然,有一个更可维护的方法,不需要在每个打开对话框的地方添加代码? using System; using System.Windows.Forms; using System.Drawing; public class MyDialog : Form { public MyDialog() { Text = "MyDialog"; } } public class MainForm : Form { public MainForm() { Button btn = […]

Delphi中的跨应用程序拖放

我想创build一个Windows XP的Delphi应用程序,允许删除从Windows资源pipe理器(桌面或文件夹窗口)或其他支持此操作的应用程序(如Total Commander)中拖动的文件。 反之亦然呢? 当用户从我的应用程序拖动图标时,我应该能够将拖动的对象的内容设置为自定义数据。 我的目标是创build一个自定义的应用程序工具栏,我可以拖放应用程序并显示它们的图标,或者拖动应用程序或其他实体。 如何才能做到这一点?

创build一个可以处理拖放多个文件的batch file

我试图通过batch file运行它们来处理几个文件。 我希望batch file能够获取所有文件(又称转储;或拖放)并处理它们。 目前我可以使用下面的批处理命令分别处理这些文件: "C:\Program Files\Wireshark\tshark.exe" -r %1 -Y "filter" -o "uat:user_dlts:\"User 8 (DLT=155)\",\"pxt\",\"0\",\"\",\"0\",\"\"" -o "gui.column.format:\"Info\",\"%%i\""> %1".filter.txt" 我正在做同样的事情,但能够简单地将文件拖放到batch file进行处理。 对于那些对上述batch file感到困惑的人: -r读取input文件,其全文件地址(包括扩展名)被%1捕获 -Y过滤掉拖放文件的某些部分 -o为运行可执行文件设置首选项(由“”s中的东西定义):tshark.exe – >将结果redirect到stdout – %1“.filter.txt”将结果输出到一个名为“draggedfilename.filter.txt”的新文件 请不要在其他地方使用此代码,除非帮助我使用此代码(由于它正在使用的应用程序)。 为了保密,我在这个版本的代码中改了几个标志。 让我知道如果你有任何问题!

如何创build拖放草莓Perl程序?

我有一个草莓Perl程序,接受一个单一的文件作为命令行参数。 我怎么设置,以便我可以将所需的文件拖放到草莓Perl程序(或其周围的包装),程序运行该文件的名称作为参数?

在wxPython中拖放的OLE方式

我有在MS Windows上运行的wxPython应用程序,我希望它支持在其实例之间拖放(所以用户打开我的应用程序3次,并将数据从一个实例拖到另一个实例)。 wxPython中的简单拖放工作方式如下: 用户启动拖动 :源窗口在wx.DataObject()中打包必要的数据,创build新的wx.DropSource,设置其数据并调用dropSource.DoDragDrop() 用户将数据拖放到目标窗口上 :拖放目标调用库函数GetData(),它将实际数据传输到其wx.DataObject实例,最后 – dataObject.GetData()将实际数据解包。 我想有一些更复杂的拖放,这将允许用户select什么数据被拖动后,他下降。 我的梦想情景: 用户启动拖动 :只有一些指向源窗口的指针被打包(某些函数或对象)。 用户将数据拖放到目标窗口上 :显示尼斯对话框,询问用户select了哪种拖放模式(如拖动歌曲名称,歌曲名称和拖动的艺术家的艺术家名称或整个专辑)。 用户select拖放模式 :拖放目标在被拖动的数据对象上调用一些函数,然后从拖动源中检索数据并将其传送到放置目标。 我梦想中的情景在MS Windows中似乎是可行的,但是wxWidgets和wxPython的文档是相当复杂和令人怀疑的。 并不是所有的wx.DataObject类都在wxPython中可用(只有wx.PySimpleDataObject),所以我希望有人分享他的经验。 这样的行为可以在wxPython中实现,而不必直接在winAPI中编写它? 编辑:ToniRuža给出了一个工作拖放示例的答案,但这不完全是我的梦想的场景。 他的代码在数据丢失时处理数据( HandleDrop()显示popup式菜单),但在启动拖动时(在On_ElementDrag() )中准备数据。 在我的应用程序中,应该有三种不同的拖放模式,其中一些需要耗时的数据准备。 这就是为什么我想推迟数据检索到用户丢弃数据和select(潜在成本高昂)D&D模式的时刻。 而对于内存保护问题 – 我想使用OLE机制进行进程间通信,就像MS Office一样。 您可以复制Excel图表并将其粘贴到MS-Word,其行为就像一个图像(好,有点)。 因为它的工作原理,我相信它可以在winAPI中完成。 我只是不知道我是否可以在wxPython中编写它。

如何从ARGV获得长文件名

我想制作一个将一些文件名作为参数的工具,但是当我使用这个代码时: ARGV.each do|a| puts "Argument: #{a}" end 我使用拖放或“发送到”在Windows中,我得到的短文件名。 所以像"C:\Ruby193\bin\test\New Text Document.txt"变成C:\Ruby193\bin\test\NEWTEX~1.TXT作为参数。 从命令行运行脚本时,没有问题,以longfilenames作为参数。 当我使用拖放或发送时,如何获得长文件名?