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.0中,实现文件拖放功能是一项常见的需求,尤其在开发具有用户友好界面的应用程序时。这个功能允许用户通过鼠标拖动文件到应用程序窗口来传递数据,极大地提升了交互性。以下将详细介绍如何在VB6.0中实现文件...
本篇文章将深入探讨如何在VB程序中实现拖放功能。 一、拖放操作基础 1. 拖放接口:VB中实现拖放操作主要依赖于Windows API(应用程序接口),尤其是OLE拖放接口。这个接口提供了IDropTarget、IDragSource和...
在VB(Visual Basic)编程环境中,实现文本文件的拖放操作是一项常见的功能需求,它能够增强用户界面的交互...当然,这个功能还可以根据实际需求进行扩展,比如增加错误处理、支持多种文件类型或者实现文件的导出功能。
在VB中实现文件拖放操作,主要涉及到以下几个关键知识点: 1. **窗体的DragEnter事件**:当用户将文件图标拖动到窗体上时,会触发窗体的DragEnter事件。在这个事件处理程序中,我们需要判断拖动的数据是否是文件,...
标题“code0004用OLE实现文件拖放.zip_拖放”表明这是一个关于使用VB通过OLE技术实现文件拖放功能的代码示例。在这个项目中,开发者可能展示了如何在VB程序中创建一个可以接受外部文件拖放的界面,使得用户可以直接...
在VB.NET 2005中,文件拖放操作是一种常见的用户界面交互方式,它使得用户可以通过简单的拖动鼠标动作将文件从桌面或其他位置移动到应用程序中。这种功能的实现涉及Windows Forms编程和.NET Framework的一些核心组件...
首先,我们需要启用树控件的拖放功能。这可以通过设置`AllowDragDrop`属性为`True`来实现。同时,我们需要设置`DragMode`属性,使其在拖放开始时进入适当的模式,通常设置为`dmAutomatic`。 2. **处理拖动开始事件...
在VB(Visual Basic)编程环境中,实现文件拖拽并显示文件路径是一项常见的功能,尤其在设计用户界面时,能够提高用户的交互体验。本教程将详细解释如何通过VB来实现这一功能。 首先,我们需要理解VB中的DragDrop...
### VB 5.0 中实现鼠标拖放功能详解 在早期的编程环境中,如Visual Basic 5.0(简称VB 5.0),实现鼠标拖放功能是一项非常实用且有趣的技术。本文将详细介绍如何在VB 5.0中实现基本的鼠标拖放功能,并解析其中涉及...
在本教程中,我们将通过一个具体的示例来学习如何在Visual Basic (VB) 应用程序中实现文件拖放功能,特别是针对图片文件的支持。该示例的目标是在窗体上放置一个`Picture1`控件,使得用户可以从外部拖放图片文件到...
实现文本文件拖放功能需要涉及到Windows消息处理、文件系统对象操作以及一些高级用户界面设计。开发者需要为界面控件注册特定的事件,比如鼠标拖动事件和放下事件,然后编写相应的事件处理程序来实现文件移动或复制...
总的来说,这个项目展示了如何利用Windows API在Windows应用程序中实现文件拖放功能,涉及到窗口类的注册、消息处理、拖放API的使用以及可能的子类化技术。对于想要学习或增强Windows桌面应用程序开发技能的人来说,...
在VB(Visual Basic)编程环境中,拖放功能是一种常见的用户交互方式,允许用户通过鼠标将文件从桌面或文件管理器直接拖放到应用程序界面,从而实现文件的导入。在这个"VB下使用拖放打开图像文件的示例.rar"压缩包中...
通过这两个实例,我们可以了解到在VB.NET中实现文件拖放的基本步骤和注意事项。这样的功能对于创建用户友好的应用程序至关重要,尤其是在需要用户频繁上传或交换文件的应用场景中。通过深入学习和实践这些源代码,...
这个实例不仅仅是关于如何实现拖放功能的教程,它更是一个全面介绍VB中Windows Forms编程技巧和Windows应用程序开发要点的课程。通过学习和实践这个实例,开发者将能够在应用程序开发中应用这些技巧,创造出更加灵活...
总的来说,实现ASP.NET中的文本文件拖放操作涉及了HTML5拖放API的使用、客户端脚本编程以及服务器端VB.NET代码的编写。通过结合这些技术,你可以创建一个用户友好的、功能完善的文件上传系统,尤其是对于文本文件的...
本次分析的压缩包文件名为“VB程序实例-图像和图像文件的拖放.zip”,文件内容涉及的是一个VB编程实例,其核心功能是实现图像和图像文件的拖放操作。 拖放操作在用户界面设计中非常常见,它允许用户通过简单的鼠标...
### 张志晨VB实例教程之文件拖放 ...通过上述步骤,我们可以实现一个简单的文件拖放功能,使用户能够方便地将TXT文件内容直接显示在VB应用程序中。这种技术不仅可以提高用户体验,还能简化文件操作的流程。
- .NET Framework:在C#或VB.NET等.NET语言中,可以使用System.Windows.Forms.Control类的AllowDrop属性和DragEnter、DragDrop事件来实现拖放功能。 - Qt:在Qt框架中,可以利用QGraphicsView和QGraphicsItem类的...
"59新颖的拖放功能.rar"这个压缩包文件很可能包含了一组VB源代码示例,用于演示如何在VB应用程序中实现拖放操作。 在VB中,实现拖放功能主要涉及以下步骤和知识点: 1. **启用DragDrop事件**:首先,你需要在控件...