
呵呵,刚刚恶补来的, 相信你应该知道怎么改成你需要的了吧把代码放到timer事件里面定期检测一次 通过u值来知道有没有移动盘
如果有的话,可以通过b数组的值来返回a数组中存储的盘符:
Option Explicit
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" _
(ByVal nDrive As String) As Long
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" _
(ByVal nBufferLength As Long, ByVal lPBuffer As String) As Long
Private Sub Command1_Click()
Dim rtn As String, a, b$(), i%, u As Boolean
Dim AllDrives As String
AllDrives = Space$(64) '设置缓冲
rtn = GetLogicalDriveStrings(Len(AllDrives), AllDrives) '调用函数得到包含所有驱动器的字符串
AllDrives = Left(AllDrives, rtn)
a = Split(Trim(AllDrives), Chr(0))
ReDim b(UBound(a))
u = False
For i = 0 To UBound(a) - 1
b(i) = GetDriveType(a(i))
If b(i) < 2 Or b(i) > 6 Then b(i) = 1
b(i) = Choose(Val(b(i)), "未知类型", "移动盘", "硬盘", "映射盘", "光驱", "内存盘")
If b(i) = "移动盘" Then u = True
Next
Text1 = ""
Text1 = IIf(u, "发现有移动盘!", "未发现移动盘!") & vbCrLf
For i = 0 To UBound(a) - 1
Text1 = Text1 & a(i) & "---" & b(i) & vbCrLf
Next
End Sub
实现起来也比较简单!
给你思路吧!自己琢磨出来了就不会忘了!
用openfiledialog这个控件就可以实现点击“打开”按钮然后打开一个框让你选择!把该控件的filter属性设为 word文件(doc)|doc|PDF文件(pdf)|pdf|CAJ文件(caf)|caj
这样就能打开指定格式的文件了!
保存文件可以参照一下这里:>
首先说一下思路:
按你的意思是插上U盘自动复制,这样就需要一个时间控件来不断检测,是不是有可移动磁盘,如果有,则复制,我把主要的工作做一下,代码如下:
Private
Declare
Function
GetDriveType
Lib
"kernel32"
Alias
"GetDriveTypeA"
(ByVal
nDrive
As
String)
As
Long
Private
Sub
Timer1_Timer()
Dim
i
As
Long,
hui
As
Long
For
i
=
Asc("A")
To
Asc("Z")'从盘符A到盘符Z检测,看是不是移动磁盘
hui
=
GetDriveType(Trim(Chr(i))
&
":")
If
hui
=
2
Then'移动磁盘的返回值是2
Timer1Enabled
=
False'停止时间控件,避免重复复制。你具体做的时候,可以加入其它检测,时间控件不能停止,否则再插入U盘就不会自动复制了。比如加入一个字符串或数组,正在复制的做个标志,每次检测循环的时候可以检测标志的数组,如果标志数组不是移动磁盘,说明磁盘已经拔掉,改回标志,下次插入还会复制。
Shell
"cmdexe
/c
xcopy
"
&
Chr(i)
&
":\
D:\qbh
/V/C/I/H/K/Y/E",
6'复制文件到d:\qbh文件夹下,可以根据需要具体设置,楼上的Jackiejor兄后面的参数是vbhide,那样有没有复制完,你并不知道。而且没有加参数E,没有这个参数,不会复制文件夹。
End
If
Next
i
End
Sub
采纳哦
dim str1 as string
str1="\Device\HarddiskVolume1\Windows\System32\svchostexe"
dim a() as string
a=split(str1,"\")
//如果是C盘的话,直接连接字符串就行了
dim str2 as string
str2="c:"
for i=3 to ubound(a)-1
str2=str2 & "\" & a(i)
next i
//str2就是你想要的路径。
Option Explicit
Private Declare Function GetDriveType Lib "kernel32dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Sub Command1_Click()
If Ydcp() = False Then MsgBox "没有检测到移动磁盘" Else MsgBox "检测到移动磁盘"
End Sub
Private Function Ydcp() As Boolean
Dim i As Integer
Ydcp = False
For i = 65 To 90
If GetDriveType(Chr(i) & ":\") = 2 Then
Ydcp = True
Exit Function
End If
Next i
End Function
请参考我的空间文章:
以上就是关于如何在当U盘被插入机时,能让VB程序知道,并获得该U盘的路径啊全部的内容,包括:如何在当U盘被插入机时,能让VB程序知道,并获得该U盘的路径啊、求助:用vb做从u盘(未知盘符)复制文件到其他盘、在Vb中,如何编制代码,实现考贝U盘里所有的文件到电脑中另一个驱动器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)