Articles of 拖放

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作为参数。 当我使用拖放或发送时,如何获得长文件名?

如何检测窗口全局范围的拖动操作?

当我在Windows XP中的屏幕边缘拖动文件夹时,它将成为包含文件夹中文件的工具栏。 如何检测窗口有拖动操作? 如果我想编写一个应用程序来检测系统范围内的拖动操作,我该怎么做? 还有另一个问题:我怎样才能禁用这个Windows XPfunction呢,真是烦人。

拖放到winapi

我有一个纯粹的Winapi应用程序,需要一些新的function。 其中之一将最好作为两个列表实现,您可以在列表之间拖放(多个)元素。 新function可以限制为一个对话框。 什么是最快捷的方式来实现呢? 一些想法: 纯Winapi(它是DetectDrag) 提供这一个对话框的单独的MFC或.NET DLL embeddedMicrosoft WebBrowser控件并使用JQuery 任何应该避免的选项? 任何更好的想法? 什么是最快实施? 任何指针如何开始?

资源pipe理器在执行拖放操作时不会释放IDataObject

我在我的应用程序中执行拖放操作。 我遇到了Windows资源pipe理器在拖放操作后不能释放我的IDataObject的问题。 为了隔离这个问题,我实现了一个非常简单的拖放源代码,它应该在大多数Win32编译器中编译。 数据对象不包含数据; 正如你所看到的一切非常简单。 数据对象包含可以使用DebugView查看的跟踪,以指示何时创build以及何时销毁。 重现: 按住鼠标键开始拖动。 将对象拖放到打开的Windows资源pipe理器窗口中。 观察DebugView中的输出; 样本输出: [4964] gdo ctor [4964] gds ctor [4964] gds dtor 这个输出表明数据源被破坏了,但有人仍然持有对我的IDataObject的引用! 开始在同一浏览器窗口中拖动文件。 即使我现在还没有和我的项目进行交互,它会导致gdo dtor被打印 – 表示对IDataObject的最终引用被释放。 我正在运行Windows 7 64位。 有意思的是,一些资源pipe理器的窗口在释放之后立即释放数据对象; 其他人似乎没有这样做,直到你开始拖动一个不同的对象到资源pipe理器窗口,如步骤#4所示。 它也似乎取决于在窗口中的哪个位置放置对象 – 有些地方会立即释放对象,有些则不会。 这很奇怪! 我的问题是这些: 资源pipe理器正常吗? 为什么是这样? 或者我的代码中有一个错误? 当我的应用程序终止时,看到COM对象仍然被引用是非常令人不安的! 这也意味着IDataObject所拥有的资源是捆绑的,直到资源pipe理器决定释放该对象。 如果这确实是正常的行为(即使它不是,我想我应该处理不合适的放置目标),那么当应用程序终止时清理未释放COM对象的最佳做法是什么? 我正在用C ++ Builder编写和使用ATL,当用户试图closures应用程序,他们得到一个非常不友好的“在这个应用程序仍然有活动的COM对象,等等等等等等,你确定要closures这个应用程序?” – 大概由ATL生成,它注意到有未发布的COM对象 – 通常在应用程序closures时是一件坏事。 这是一些示例代码。 它实现了一个不提供数据的IDataObject,以及一个非常基本的IDropSource。 当然,真正的应用程序通过IDataObject提供数据,但是我发现这个基本的实现足以重现这个问题。 我用C ++ Builder写的,但是其中90%是可移植的Win32代码。 […]