zoukankan      html  css  js  c++  java
  • 在VB.NET中获取剪贴板文件

    介绍 在VB6中,您可

      

    以使用各种API调用来获取剪贴板上文件的FileDropList,以及更多的调用来获取DropEffect,它告诉您文件是从Windows文件资源管理器复制或剪切的位置。 在VB。NET,它甚至更容易从剪贴板获得FileDropList使用专门的字符串集合。但我不知道如何得到下降效果。通过查看旧方法的作用,并使用我找到的一个c#示例,我能够得到DropEffect。 要获得DropEffect,将一个对象设置为My.Computer.Clipboard。GetData("Preferred DropEffect"),然后将前4个字节读入字节数组。第一个字节是DropEffect。我没有使用其他3个字节,但旧代码抓取他们由于格式可变,所以我做了。 在VB6中获取FileDropList和DropEffect 在VB6中,您可以使用对剪贴板函数的调用来检索文件列表,然后再使用另一个调用来获得具有drop效果的数据。对MoveMemory的调用将数据置于我们可以使用的格式中。(在VB6中如何做到这一点的完整示例可以在其他地方找到)。 隐藏,收缩,复制Code

    Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
    Private Declare Function IsClipboardFormatAvailable _
            Lib "user32" (ByVal wFormat As Long) As Long
    Private Declare Function RegisterClipboardFormat Lib "user32" +
            Alias "RegisterClipboardFormatA" (ByVal lpString As String) As Long
    
    Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _
           (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
    
       Dim hDrop         As Long
       Dim nFiles        As Long
       Dim i             As Long
       Dim desc          As String
       Dim Filename      As String
       Dim pt            As POINTAPI
       Dim lngEffect     As Long
       Dim lngFormat     As Long
       Dim hGlobal       As Long
       Const MAX_PATH    As Long = 260
       
       ' Insure desired format is there, and open clipboard.
       If IsClipboardFormatAvailable(CF_HDROP) Then
          If OpenClipboard(0&) Then
             
             ' Get handle to Dropped Filelist data, and number of files.
             hDrop = GetClipboardData(CF_HDROP)
             nFiles = DragQueryFile(hDrop, -1&, "", 0)
             
             ' Allocate space for return and working variables.
             ReDim Files(0 To nFiles - 1) As String
             Filename = Space(MAX_PATH)
             
             ' Retrieve each filename in Dropped Filelist.
             For i = 0 To nFiles - 1
                Call DragQueryFile(hDrop, i, Filename, Len(Filename))
                Files(i) = TrimNull(Filename)
             Next
             
             lngFormat = RegisterClipboardFormat(CFSTR_PREFERREDDROPEFFECT)
             hGlobal = GetClipboardData(lngFormat)
          
             If (hGlobal) Then
               MoveMemory lngEffect, ByVal hGlobal, 4
               DropEffect = lngEffect
             End If
    
          End If
    End If

    在VB.NET中获取FileDropList和DropEffect 在VB中得到DropEffect。NET要求从剪贴板中获取“首选DropEffect”数据,并用内存流读取它。 隐藏,收缩,复制Code

    '*>-------------------------------------------------------------------
    '*>Handle Droplist
    '*>-------------------------------------------------------------------
    If My.Computer.Clipboard.ContainsFileDropList() Then
    
        '*>-------------------------------------------------------------------
        '*>Get DropEffect Type
        '*>-------------------------------------------------------------------
        Dim DropEffectData(3) As Byte
        Dim DropEffectCheck As Object = _
            My.Computer.Clipboard.GetData("Preferred DropEffect")
        DropEffectCheck.Read(DropEffectData, 0, DropEffectData.Length)
    
        Select Case DropEffectData(0)
            Case 2
                DropEff = DragDropEffects.Move
                DropEffType = "Move"
            Case 5
                DropEff = DragDropEffects.Copy
                DropEffType = "Copy"
            Case Else
                DropEffType = "???"
        End Select
    
        DropEffNum = DropEffectData(0).ToString
        TextBox1.Text = String.Concat(DropEffNum, " - ", DropEffType)
    
        '*>-------------------------------------------------------------------
        '*>Get File Names
        '*>-------------------------------------------------------------------
        Dim FileNameCollection As Collections.Specialized.StringCollection = _
                                  My.Computer.Clipboard.GetFileDropList()
        For Each FileName As String In FileNameCollection
            RichTextBox1.Text = String.Concat(RichTextBox1.Text, FileName, vbCrLf)
        Next
    
    End If

    样例应用程序 示例应用程序显示了DropEffect和放在剪贴板上的文件列表。在从文件资源管理器中剪切和复制文件之间切换,以查看DropEffect更改。 本文转载于:http://www.diyabc.com/frontweb/news186.html

  • 相关阅读:
    养成好习惯:在控制面板里停止服务
    很吊炸天的Xcode插件,你想要的这都有
    Cscope how to support java and c++
    java_lambda表达式
    【C语言】14-返回指针的函数与指向函数的指针
    李洪强
    【C语言】13-指针和字符串
    李洪强-C语言7-C语言运算符
    【C语言】12-指向一维数组元素的指针
    李洪强-C语言6-控制结构
  • 原文地址:https://www.cnblogs.com/Dincat/p/13431048.html
Copyright © 2011-2022 走看看