delphi 修改盘符名称  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 修改盘符名称


 DOS命令的

set old=K:
set new=E:
for /f %%i in ('mountvol %old% /l') do set "vol=%%i"
mountvol %old% /d
mountvol %new% %vol%
popd





delphi的

_DeleteVolumeMountPoint:function(lpszVolumeMountPoint:LPCSTR):BOOL;stdcall;
_SetVolumeMountPoint:function(lpszVolumeMountPoint:LPCSTR;lpszVolumeName:LPCSTR):BOOL;stdcall;
_GetVolumeNameForVolumeMountPoint:function(lpszVolumeMountPoint:LPCSTR;lpszVolumeName:LPSTR;cchBufferLength:DWORD):BOOL;stdcall;







Procedure GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint:LPCSTR;lpszVolumeName:LPSTR;cchBufferLength:DWORD);
var
Kernel32:THandle;
begin
Kernel32:=0;
Kernel32:=GetModuleHandle(PChar('kernel32.dll'));
if Kernel32 <> 0 then
begin
@_GetVolumeNameForVolumeMountPoint:=GetProcAddress(Kernel32,PChar('GetVolumeNameForVolumeMountPointA'));
end;
if Assigned(_GetVolumeNameForVolumeMountPoint) then
begin
_GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint,lpszVolumeName,cchBufferLength);
end;
end;


Procedure SetVolumeMountPoint(lpszVolumeMountPoint:LPCSTR;lpszVolumeName:LPCSTR);
var
Kernel32:THandle;
begin
Kernel32:=0;
Kernel32:=GetModuleHandle(PChar( 'kernel32.dll'));
if Kernel32 <> 0 then
begin
@_SetVolumeMountPoint :=GetProcAddress(Kernel32,PChar( 'SetVolumeMountPointA'));
end;
if Assigned(_SetVolumeMountPoint) then
begin
_SetVolumeMountPoint(lpszVolumeMountPoint,lpszVolumeName);
end;
end;




Procedure DeleteVolumeMountPoint(lpszVolumeMountPoint:LPCSTR);
var
Kernel32:THandle;
begin
Kernel32:=0;
Kernel32:=GetModuleHandle(PChar( 'kernel32.dll'));
if Kernel32 <> 0 then
begin
@_DeleteVolumeMountPoint:=GetProcAddress(Kernel32,PChar('DeleteVolumeMountPointA'));
end;
if Assigned(_DeleteVolumeMountPoint) then
begin
_DeleteVolumeMountPoint(lpszVolumeMountPoint);
end;
end;


procedure CharDiskName(OldName:string;NewName:string);
var
VolumeName: array [0..MAX_PATH] of Char;
begin
GetVolumeNameForVolumeMountPoint(PChar(OldName), VolumeName,MAX_PATH);
DeleteVolumeMountPoint(PChar(OldName));
SetVolumeMountPoint(PChar(NewName), VolumeName);
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
CharDiskName('K:\','E:\');
end;


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.034096002578735 seconds