`
hereson2
  • 浏览: 458510 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

VB程序实现文件拖放功能

VB 
阅读更多


1.新建一个模块,写入以下代码:

Option Explicit

Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
        ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    '将消息传答窗口函数
    
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, _
        ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    '在窗口结构中为指定的窗口设置信息

Private IPrevWndProc As Long

Private hHookWindow As Long
      
Public Declare Sub DragAcceptFiles Lib "shell32.dll" (ByVal hWnd As Long, ByVal fAccept As Long)
    '登记窗口是否接受托动文件的内容

Public Declare Sub DragFinish Lib "shell32.dll" (ByVal hDrop As Long)   '释放分配用于托动文件的内容

Public Declare Function DragQueryFile Lib "shell32.dll" Alias "DragQueryFileA" (ByVal hDrop As Long, _
        ByVal UINT As Long, ByVal lpStr As String, ByVal ch As Long) As Long
    '返回托动的文件名

Public Const GWL_WNDPROC = (-4)

Public Const WM_DROPFILES = &H233

Public Sub SetHook(IHwnd As Long)   '设置消息接法挂钩
    If hHookWindow <> 0 Then Call ClearHook   '如果已经挂钩则删除当前子类挂钩
    hHookWindow = IHwnd   '保存拖动文件的句柄
    IPrevWndProc = SetWindowLong(hHookWindow, GWL_WNDPROC, AddressOf HookCallBack)   '设置与该文件挂钩
    '第三个参数告诉系统程序处理消息是用哪个函数
End Sub

Public Sub ClearHook()    '删除子类消息挂钩
    Dim IReturn As Long
    '检查保证此程序有一个当前挂钩
    If hHookWindow = 0 Then Exit Sub
    If IsEmpty(hHookWindow) Then Exit Sub
    If IsNull(hHookWindow) Then Exit Sub
    IReturn = SetWindowLong(hHookWindow, GWL_WNDPROC, IPrevWndProc)   '删除挂钩
End Sub

Function HookCallBack(ByVal hWnd As Long, ByVal IMsg As Long, ByVal wParam As Long, ByVal IParam As Long) _
        As Long
    Select Case hWnd
        Case hHookWindow  '如果消息是发给应用程序主窗体
            MainFrm.MessageProc IMsg, wParam, IParam
            '注意此处MainFrm为窗体名称,MessageProc为该窗体自身的消息处理函数
        Case Else
    End Select
    HookCallBack = CallWindowProc(IPrevWndProc, hWnd, IMsg, wParam, IParam)
    '将消息传递给消息处理栈中的下一个进程
End Function

2.在窗体上添加一个ListBox控件,命名为lstFiles,接着拖入2个按钮,命名为cmdAction,最后写入如下代码:

Option Explicit

Private Sub cmdAction_Click(Index As Integer)
    Select Case Index
        Case 0
            lstFiles.Clear
        Case 1
            End
    End Select
End Sub

Private Sub Form_Load()
    Call SetHook(Me.hWnd)
    Call DragAcceptFiles(Me.hWnd, True)
End Sub

Private Sub Form_Terminate()
    Call ClearHook
End Sub

Public Sub MessageProc(IMsg As Long, wParam As Long, IParam As Long)
    Dim nDropCount As Integer
    Dim nLoopCtr As Integer
    Dim IReturn As Long
    Dim hDrop As Long
    Dim sFileName As String
    Select Case IMsg
        Case WM_DROPFILES
            hDrop = wParam   '保存拖放文件的句柄
            sFileName = Space$(255)
            nDropCount = DragQueryFile(hDrop, -1, sFileName, 254)   'DragQueryFile 判定多少文件已拖放在窗体中
            For nLoopCtr = 0 To nDropCount - 1
                sFileName = Space$(255)
                IReturn = DragQueryFile(hDrop, nLoopCtr, sFileName, 254)
                lstFiles.AddItem Left$(sFileName, IReturn)
            Next
            Call DragFinish(hDrop)  '释放内部拖放文件事件的句柄
    End Select
End Sub

最后允许程序,就可以看到把其他程序拖入本程序,程序就能获得其绝对路径了.
分享到:
评论

相关推荐

    VB6实现文件拖放功能(详细说明方法)

    在VB6.0中,实现文件拖放功能是一项常见的需求,尤其在开发具有用户友好界面的应用程序时。这个功能允许用户通过鼠标拖动文件到应用程序窗口来传递数据,极大地提升了交互性。以下将详细介绍如何在VB6.0中实现文件...

    VB 程序拖放操作

    本篇文章将深入探讨如何在VB程序中实现拖放功能。 一、拖放操作基础 1. 拖放接口:VB中实现拖放操作主要依赖于Windows API(应用程序接口),尤其是OLE拖放接口。这个接口提供了IDropTarget、IDragSource和...

    VB 文本文件的拖放操作

    在VB(Visual Basic)编程环境中,实现文本文件的拖放操作是一项常见的功能需求,它能够增强用户界面的交互...当然,这个功能还可以根据实际需求进行扩展,比如增加错误处理、支持多种文件类型或者实现文件的导出功能。

    VB文件拖放操作实例

    在VB中实现文件拖放操作,主要涉及到以下几个关键知识点: 1. **窗体的DragEnter事件**:当用户将文件图标拖动到窗体上时,会触发窗体的DragEnter事件。在这个事件处理程序中,我们需要判断拖动的数据是否是文件,...

    code0004用OLE实现文件拖放.zip_拖放

    标题“code0004用OLE实现文件拖放.zip_拖放”表明这是一个关于使用VB通过OLE技术实现文件拖放功能的代码示例。在这个项目中,开发者可能展示了如何在VB程序中创建一个可以接受外部文件拖放的界面,使得用户可以直接...

    文件拖放操作源代码(vb.net2005)

    在VB.NET 2005中,文件拖放操作是一种常见的用户界面交互方式,它使得用户可以通过简单的拖动鼠标动作将文件从桌面或其他位置移动到应用程序中。这种功能的实现涉及Windows Forms编程和.NET Framework的一些核心组件...

    vb 实现文件拖拽显示文件路径

    在VB(Visual Basic)编程环境中,实现文件拖拽并显示文件路径是一项常见的功能,尤其在设计用户界面时,能够提高用户的交互体验。本教程将详细解释如何通过VB来实现这一功能。 首先,我们需要理解VB中的DragDrop...

    VB树控件的拖放操作

    首先,我们需要启用树控件的拖放功能。这可以通过设置`AllowDragDrop`属性为`True`来实现。同时,我们需要设置`DragMode`属性,使其在拖放开始时进入适当的模式,通常设置为`dmAutomatic`。 2. **处理拖动开始事件...

    张志晨VB实例教程之文件拖放-图片

    在本教程中,我们将通过一个具体的示例来学习如何在Visual Basic (VB) 应用程序中实现文件拖放功能,特别是针对图片文件的支持。该示例的目标是在窗体上放置一个`Picture1`控件,使得用户可以从外部拖放图片文件到...

    VB 5.0中实现鼠标拖放...

    ### VB 5.0 中实现鼠标拖放功能详解 在早期的编程环境中,如Visual Basic 5.0(简称VB 5.0),实现鼠标拖放功能是一项非常实用且有趣的技术。本文将详细介绍如何在VB 5.0中实现基本的鼠标拖放功能,并解析其中涉及...

    采用API实现的文件拖放 .zip_拖放

    总的来说,这个项目展示了如何利用Windows API在Windows应用程序中实现文件拖放功能,涉及到窗口类的注册、消息处理、拖放API的使用以及可能的子类化技术。对于想要学习或增强Windows桌面应用程序开发技能的人来说,...

    VB下使用拖放打开图像文件的示例.rar

    在VB(Visual Basic)编程环境中,拖放功能是一种常见的用户交互方式,允许用户通过鼠标将文件从桌面或文件管理器直接拖放到应用程序界面,从而实现文件的导入。在这个"VB下使用拖放打开图像文件的示例.rar"压缩包中...

    文件拖放应用程序全部源代码

    通过这两个实例,我们可以了解到在VB.NET中实现文件拖放的基本步骤和注意事项。这样的功能对于创建用户友好的应用程序至关重要,尤其是在需要用户频繁上传或交换文件的应用场景中。通过深入学习和实践这些源代码,...

    asp.net 文本文件的拖放操作源码

    总的来说,实现ASP.NET中的文本文件拖放操作涉及了HTML5拖放API的使用、客户端脚本编程以及服务器端VB.NET代码的编写。通过结合这些技术,你可以创建一个用户友好的、功能完善的文件上传系统,尤其是对于文本文件的...

    张志晨VB实例教程之文件拖放1.txt

    ### 张志晨VB实例教程之文件拖放 ...通过上述步骤,我们可以实现一个简单的文件拖放功能,使用户能够方便地将TXT文件内容直接显示在VB应用程序中。这种技术不仅可以提高用户体验,还能简化文件操作的流程。

    文件拖放程序

    - .NET Framework:在C#或VB.NET等.NET语言中,可以使用System.Windows.Forms.Control类的AllowDrop属性和DragEnter、DragDrop事件来实现拖放功能。 - Qt:在Qt框架中,可以利用QGraphicsView和QGraphicsItem类的...

    VB编程源代码 59新颖的拖放功能.rar

    "59新颖的拖放功能.rar"这个压缩包文件很可能包含了一组VB源代码示例,用于演示如何在VB应用程序中实现拖放操作。 在VB中,实现拖放功能主要涉及以下步骤和知识点: 1. **启用DragDrop事件**:首先,你需要在控件...

    VB拖放文件夹和获取目录内文件

    1. **拖放文件夹到VB程序界面** 拖放操作在VB中可以通过`DragDrop`和`DoDragDrop`事件来实现。首先,你需要启用控件(例如TextBox)的`AllowDrop`属性,使其能够接收拖放操作。当用户拖放文件夹时,`DragEnter`事件...

    VB_实现拖拽功能

    这两个事件适用于接收外部数据,比如从其他应用程序或文件拖放到我们的VB窗体上。`DragEnter`事件通常用来判断是否接受拖来的数据(通过`Data.GetDataPresent`检查数据类型),而`DragDrop`事件则实际执行数据的...

    VB 文件夹对比工具,批放拖放功能(源码)

    实现拖放功能需要用到Windows API函数,如RegisterClassEx和DragAcceptFiles,以及处理WM_DROPFILES消息来接收拖放的文件或文件夹信息。 在文件夹对比的过程中,核心算法是关键。通常,开发者会遍历两个文件夹的...

Global site tag (gtag.js) - Google Analytics