盘符名源码
A. 易语言检测U盘插入并获取盘符,求方法,有源码更好!
下面是获取U盘的插入或拔除事件的代码,有dll命令和自定义类型常量。如果不是很明白,把邮箱写上,我发给你。
.
.版本 2
.程序集 窗口程序集1
.程序集变量 a, 子程序指针
.子程序 __启动窗口_创建完毕
a = SetWindowLong (_启动窗口.取窗口句柄 (), -4, &MsgProc)
.子程序 MsgProc, 整数型
.参数 hwnd, 整数型
.参数 msg, 整数型
.参数 wp, 整数型
.参数 lp, 整数型
.局部变量 val, PDEV_BROADCAST_VOLUME
.局部变量 i, 整数型
.局部变量 mask, 整数型
.判断开始 (msg = 537)
.判断开始 (wp = #DBT_DEVICERARRIVAL) ' 插入设备
复制结构体 (val, lp, 14)
.如果真 (val.dbcv_devicetype = #DBT_DEVTYP_VOLUME)
mask = val.dbcv_unitmask
.变量循环首 (0, 25, 1, i)
.如果真 (位与 (mask, 1) = 1)
跳出循环 ()
.如果真结束
mask = 右移 (mask, 1)
.变量循环尾 ()
编辑框1.加入文本 (“USB磁盘被插入,盘符:” + 字符 (65 + i) + #换行符)
检测 (字符 (65 + i))
.如果真结束
.判断 (wp = #DBT_DEVICEREMOVECOMPLETE) ' 删除设备
复制结构体 (val, lp, 14)
.如果真 (val.dbcv_devicetype = #DBT_DEVTYP_VOLUME)
mask = val.dbcv_unitmask
.变量循环首 (0, 25, 1, i)
.如果真 (位与 (mask, 1) = 1)
跳出循环 ()
.如果真结束
mask = 右移 (mask, 1)
.变量循环尾 ()
编辑框1.加入文本 (“USB磁盘被拔除,盘符:” + 字符 (65 + i) + #换行符)
.如果真结束
.默认
.判断结束
.默认
.判断结束
返回 (CallWindowProc (a, hwnd, msg, wp, lp))
.子程序 __启动窗口_将被销毁
a = SetWindowLong (_启动窗口.取窗口句柄 (), -4, a)
.子程序 检测
.参数 盘符, 文本型
.局部变量 fn, 文本型
fn = 寻找文件 (盘符 + “:\*.*”, )
编辑框2.内容 = “”
.判断循环首 (fn ≠ “”)
编辑框2.加入文本 (fn + #换行符)
fn = 寻找文件 (, )
.判断循环尾 ()
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈自定义类型≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
.数据类型 PDEV_BROADCAST_VOLUME
.成员 dbcv_size, 整数型, , , 14
.成员 dbcv_devicetype, 整数型
.成员 dbcv_reserved, 整数型
.成员 dbcv_unitmask, 整数型
.成员 dbcv_flags, 短整数型
.数据类型 _DEV_BROADCAST_HDR
.成员 dbch_size, 整数型
.成员 dbch_devicetype, 整数型
.成员 dbch_reserved, 整数型
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈常量≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
.常量 WM_DEVICECHANGE, "537", , 驱动盘符被改变
.常量 DBT_DEVICEREMOVECOMPLETE, "32772"
.常量 DBT_DEVICERARRIVAL, "32768"
.常量 DBT_DEVTYP_OEM, "0"
.常量 DBT_DEVTYP_DEVNODE, "1"
.常量 DBT_DEVTYP_VOLUME, "2"
.常量 DBT_DEVTYP_PORT, "3"
.常量 DBT_DEVTYP_N, "4"
B. 如何利用脚本自动修改的U盘盘符
可以利用Autorun.inf文件来自动修改盘符。。
新建记事本文件。。里面写上如下内容。。
[AUTORUN]Icon=x.ico
然后保存。。并将文件名改为Autorun.inf。。扩展名都要改了。。
然后把你想要当作盘符的图片,转换成ico格式。。并命名为x.ico
最后。。将以上两个文件放到U盘根目录下。。重新插入U盘即可生效。。
C. win7硬盘有四个分区,他们的盘符名称是什么我只知道C盘盘符名称是(系统)请问那三个盘符名是什
默认是没有盘符名称,统一为“本地磁盘”
如果通过快速分区类软件分区的,一般在GHOST安装系统时有这个分区步骤
那么一般就是“系统”,“数据”,“游戏”,“娱乐”,“影视”,“文档”,“工作”,这几种。
D. bat 提取 盘符及名称
CMD默认代码页是美国的话,楼上就是对的了。
@echo off
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
fsutil fsinfo drivetype %%i: | find "固定">nul && (
for /f "tokens=1-4" %%a in ('vol %%i:^|find "驱动器"') do (echo %%d^(%%b:^))
)
fsutil fsinfo drivetype %%i: | find "移动">nul && (
for /f "tokens=1-4" %%a in ('vol %%i:^|find "驱动器"') do (echo %%d^(%%b:^))
)
)
pause>nul
E. VB获取盘符的名字
不知道是不是你想要的...
用FSO(文件系统对象模型)实现
FSO对象模型包含在SCRIPTING类型库(SCRRUN.DLL)中。调用方法如下:
在项目菜单中选择引用,在COM中选择Microsoft Scripting Runtime
在代码最顶端添加Imports Scripting,在按钮的单击事件中加入以下代码:
Imports Scripting
Private Sub btnFso_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFso.Click
Dim Fso As New FileSystemObject
Dim drvDisk As Drive, strResult As String
drvDisk = Fso.GetDrive("C:\")
strResult = "Drive " & "C:\" & vbCrLf
strResult += "磁盘卷标:" & drvDisk.VolumeName & vbCrLf
strResult += "磁盘序列号:" & drvDisk.SerialNumber & vbCrLf
strResult += "磁盘类型:" & drvDisk.DriveType & vbCrLf
strResult += "文件系统:" & drvDisk.FileSystem & vbCrLf
strResult += "磁盘容量(G): " & FormatNumber(((drvDisk.TotalSize / 1024) / 1024) / 1024, 2, , , Microsoft.VisualBasic.TriState.True) & vbCrLf
strResult += "可用空间(G): " & FormatNumber(((drvDisk.FreeSpace / 1024) / 1024) / 1024, 2, , , Microsoft.VisualBasic.TriState.True) & vbCrLf
strResult += "已用空间(G):" & FormatNumber(((((drvDisk.TotalSize - drvDisk.FreeSpace) / 1024) / 1024) / 1024), 2, , , Microsoft.VisualBasic.TriState.True)
MsgBox(strResult)
End Sub
F. vb如何得到硬盘各盘符名称
Const DRIVE_REMOVABLE = 2
Const DRIVE_FIXED = 3
Const DRIVE_REMOTE = 4
Const DRIVE_CDROM = 5
Const DRIVE_RAMDISK = 6
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias _
"GetLogicalDriveStringsA" (ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias _
"GetDriveTypeA" (ByVal nDrive As String) As Long
Private Sub Command1_Click()
Dim strMsg As String, i%, lng As Long, strDriver As String * 254, strD$
lng = GetLogicalDriveStrings(255, strDriver$) '得到所有盘符的字符串,并返回盘的数目lng
ReDim strDriveName(1 To lng) As String
Dim count As Integer
For i = 0 To lng / 4 - 1
strD$ = Mid$(strDriver$, i * 4 + 1, 3)
Select Case Val(GetDriveType(strD$))
Case DRIVE_REMOVABLE
strMsg = "可移动盘"
Case DRIVE_FIXED
strMsg = "硬盘"
count = count + 1
strDriveName(count) = strD$
Case DRIVE_REMOTE
strMsg = "映射盘"
Case DRIVE_CDROM
strMsg = "光驱"
Case DRIVE_RAMDISK
strMsg = "内存虚拟盘"
Case Else
strMsg = "未知"
End Select
Debug.Print strD$; " 是 "; strMsg
Next i
ReDim Preserve strDriveName(1 To count)
End Sub
硬盘的
strDriveName(1) "c:\"
strDriveName(2) "d:\"
...
G. 怎么修改系统盘 盘符(名字)
修改系统盘盘符的具体步骤如下:
我们需要准备的材料分别是:电脑。
1、首先我们打开控制面板中的“管理工具”。
H. 批处理提取盘符名
@echo off
setlocal enabledelayedexpansion
for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
set var=%%i
set drive=!var:~-2!
fsutil fsinfo drivetype !drive!|find "固定">nul &&vol !drive!|find "驱动器" >>结果.txt
)
pause