在我的.NET Windows窗体上从Chrome实现拖放

前端之家收集整理的这篇文章主要介绍了在我的.NET Windows窗体上从Chrome实现拖放前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
谷歌浏览器有一个方便的功能,我可以点击下载链接并将其拖动到Windows资源管理器窗口中,然后删除.放弃后,Chrome会下载该文件,并将其放在我放下的位置.

我希望能够从Google Chrome下载到我的应用程序中,但似乎并不是那么简单.我有一个名为gridFiles的DataGridView,以下代码

Private Sub gridFiles_DragDrop(ByVal sender As Object,ByVal e As System.Windows.Forms.DragEventArgs) Handles gridFiles.DragDrop
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        Dim DroppedFiles() As String = e.Data.GetData(DataFormats.FileDrop)
        If Not DroppedFiles Is Nothing Then
            For Each file As String In DroppedFiles
                MsgBox(file)
            Next
        End If
    End If
End Sub

Private Sub gridFiles_DragEnter(ByVal sender As Object,ByVal e As System.Windows.Forms.DragEventArgs) Handles gridFiles.DragEnter
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        e.Effect = DragDropEffects.All
    End If

End Sub

当我从Windows资源管理器中删除文件时,一切正常,我收到每个被删除文件的消息框.但是,当我从Chrome中删除时,没有任何反应.其原因是DroppedFiles等于Nothing.看来e.Data.GetData没有返回任何东西.我已经使用e.Data.GetFormats()检查格式,并返回FileDrop,FileName,FileNameW,如同任何文件丢弃一样.

我相当确定的是,Chrome表示它有一些文件,以便DragEnter功能,但由于尚未下载该文件,DragDrop无法完成,所以Chrome返回任何文件.我怀疑在Windows资源管理器的上下文中,Chrome以某种方式获取该窗口的路径并稍后复制该文件.

所以我的问题是…

我如何愚弄Google Chrome进入我的应用程序?我看到这个工作通过某种方式给Chrome一个临时文件夹,认为它已经放弃了文件,我的应用程序将监视该文件夹的新文件,并在下载后将其拉入.我只需要找到Chrome的“知道”该文件夹的方法.

或者,如果我可以得到被删除的URL,那也是很好的.我可以用我的程序下载文件.

任何和所有的建议是非常感谢.谢谢.

编辑:所以看起来,使用普通的URL,我确实获得了正确的拖放UniformResourceLocator格式.我看到的行为与Gmail中的下载链接有关.它可能发生在别的地方,但我不确定.当gmail附件从Gmail拖到我的应用程序中时,我会收到一个FileDrop.

做更多的挖掘,似乎Gmail正在使用锚标签的download_url属性.我从来没有听说过这个.也许这只是他们添加的额外财产?

无论如何,由于我的应用程序将主要与电子邮件附件一起使用,所以我需要一个幻影FileDrop的工作方法,如上所述.我无法使用间谍.当出现丢失时似乎没有显示任何消息. (我也欢迎就这个问题提出任何建议.)

编辑#2:有关Gmail如何利用拖放文件的更多信息:http://www.thecssninja.com/javascript/gmail-dragout

我已经把我头顶上的公里的头发放在了自己的怪异的拖放行为上.六位变量提到的间谍可能是一个好主意.另一个是从我的Q / As中的一个在SO中看一下讨论:

Drag and Drop between Instances of the same Windows Forms Application

从我自己的经验来看,我似乎记得从浏览器拖放是一个安全问题,因此处理方式不同.希望这可以帮助.

编辑:

也许这回答你的问题:

http://www.vbforums.com/showthread.php?t=529211

猜你在找的Windows相关文章