Private Sub Form_Load()
Me.OLEDropMode = 1
End SubPrivate Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim sCom As String
sCom = Command
txtFile.Text = sCom & vbCrLf
Dim nCount As Integer, nIndex As Integer
Dim sName As String
With Data
nCount = .Files.Count
For nIndex = 1 To nCount
txtFile.Text = txtFile.Text & .Files.Item(nIndex) & vbCrLf
Next
End With
End Sub
如上方式获得文件名以后在Open 那个文件,将内容输出到文本框
不过我记得好像还有一种更简单的方法
Me.OLEDropMode = 1
End SubPrivate Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim sCom As String
sCom = Command
txtFile.Text = sCom & vbCrLf
Dim nCount As Integer, nIndex As Integer
Dim sName As String
With Data
nCount = .Files.Count
For nIndex = 1 To nCount
txtFile.Text = txtFile.Text & .Files.Item(nIndex) & vbCrLf
Next
End With
End Sub
如上方式获得文件名以后在Open 那个文件,将内容输出到文本框
不过我记得好像还有一种更简单的方法
解决方案 »
- 请问视频共享站,会员在上传视频时,往往需要下载视频上传控件,这个传输是基于那种协议的传输?
- 求助如何更好的使用代码
- MsFlexGrid控件如何修改里面显示的数据啊??
- 我用的是winmm.dll的mciexecute来播放动画,请问如何控制播放速度!谢谢
- 问一个菜鸟级的问题,关于控件注册的。是不是在VB能用的的控件,以后要发布打包,VB安装程序是不是自动给注册了,我就不用注册了?指教
- VB6是否支持Regular Expression?
- 找零钱问题!!!
- ===========谁能给我仔细讲讲listview的用法?怎么让它的滚动条也支持图形?======
- 怎么用API来判断光驱里有没有CD??
- 明天就要交货,请教大虾VB数据库编程的一点问题。
- 关于datagrid控件的小问题,各位请指教!!!
- 有谁知道vb中有没有关于usb的控件的内容?
Me.OLEDropMode = 1
End SubPrivate Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim sCom As String
sCom = Command
txtFile.Text = sCom & vbCrLf
Dim nCount As Integer, nIndex As Integer
Dim sName As String
With Data
nCount = .Files.Count
For nIndex = 1 To nCount
txtFile.Text = txtFile.Text & .Files.Item(nIndex) & vbCrLf
Next
End With
End Sub
如上方式获得文件名以后在Open 那个文件,将内容输出到文本框
不过我记得好像还有一种更简单的方法
Text1.OLEDropMode = vbOLEDropManual
End SubPrivate Sub text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
If IsWhatIWant(Data) Then
MsgBox Data.Files(1)
End If
End SubPrivate Sub text1_OLEDragOver(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
If IsWhatIWant(Data) Then Effect = vbDropEffectCopy And Effect Else Effect = vbDropEffectNone
End SubPrivate Function IsWhatIWant(Data As DataObject) As Boolean
On Error GoTo jmp
Dim ts As String
ts = Data.Files(1)
If Data.GetFormat(vbCFFiles) Then
If LCase(Right(ts, 4)) = ".txt" Then IsWhatIWant = True
End If
jmp:
End Function
'---------------
已经得出文件名,打开文件就自己写吧
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 LongPublic Declare Function SetWindowLong
Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long,
ByVal dwNewLong As Long) As LongPublic 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 LongPublic Const WM_DROPFILES = &H233
Public Const GWL_WNDPROC = (-4)
Public OldWndProc&Public Sub NewtxtWndFunc(ByVal Hwndl&)
OldWndProc = SetWindowLong(Hwndl,
GWL_WNDPROC, AddressOf txtWndProc)’返回
’窗口的默认窗口函数的地址,以便恢复
End SubPublic Sub OldtxtWndFunc(ByVal Hwndl&)'恢复窗口的默认窗口函数
SetWindowLong Hwndl, GWL_WNDPROC, OldWndProc
End SubPublic Function txtWndProc&(ByVal NewHwnd&,
ByVal uMsg&, ByVal wParam&, ByVal lParam&)
Select Case uMsg
Case WM_DROPFILES
Dim Handle&, FileNameBuff$, Result&,
hDrop&, FileNum&
Dim fLine$
hDrop = wParam
FileNameBuff = Space(100)
Result = DragQueryFile(hDrop, (-1),
FileNameBuff, 100)'获得拖动的文件的数目
For i& = 0 To Result - 1
DragQueryFile hDrop, i, FileNameBuff, 100
xyOpenFile Trim(FileNameBuff)
Next
DragFinish hDrop
txtWndProc = 1
Case Else
txtWndProc = CallWindowProc(OldWndProc,
NewHwnd, uMsg, wParam, lParam)
End Select
End FunctionPublic Function xyOpenFile(ByVal FN$) As Boolean
If BeUsed(MDIForm1.ActiveForm) Then
MDIForm1.MunNew_Click
End If
Dim FileNum&, fLine$
FileNum = FreeFile()
MDIForm1.ActiveForm.Caption = FN
Open FN For Input As #FileNum
fLine = StrConv(InputB(LOF(FileNum),
#FileNum), vbUnicode)
MDIForm1.ActiveForm.Text1 = fLine
Close
End Function
-----
'在子窗口Form1中有一个Text1文本框,Form1的Load过程中代码如下:
Private Sub Form_Load()
DragAcceptFiles Text1.hwnd, True
NewtxtWndFunc Text1.hwnd
End Sub
'习惯上要在窗口的退出过程中恢复窗口的默认窗口函数:
Private Sub Form_QueryUnload(Cancel As Integer,
UnloadMode As Integer)
OldtxtWndFunc Text1.hwnd
End Sub
'Text1.OLEDragMode = 1 (自动)
'Text1.OLEDropMode = 2 (手动)2.加入以下程序:
---------------------------------------------------------------
Private Sub Text1_OLEDragOver(Data As DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, _
Y As Single, State As Integer)
'是不是文件?
If Data.GetFormat(vbCFFiles) Then
'设定为Copy
Effect = vbDropEffectCopy And Effect
Else
'不要移动
Effect = vbDropEffectNone
End If
End SubPrivate Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, _
Y As Single)
Dim vFN As Variant
Dim st As String
Dim FileNo As Long
'是不是文件?
If Data.GetFormat(vbCFFiles) Then
Text1.Text = "" '对每个文件进行读取
For Each vFN In Data.Files
'显示文件名
Text1.Text = Text1.Text & String(Len(vFN), "=") & _
vbCrLf & CStr(vFN) & vbCrLf & String(Len(vFN), "=") & vbCrLf
'打开文件
FileNo = FreeFile
Open CStr(vFN) For Input As #FileNo
st = StrConv(InputB(LOF(FileNo), #FileNo), vbUnicode)
Close #FileNo
'显示文件内容
Text1.Text = Text1.Text & st & vbCrLf
Next vFN
End If
End Sub