通过GUID获取盘符? 已经知道GUID是多少了。根据GUID能否获取盘符。。DELPHI 可能函数能解决吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵 给你个地址 http://bbs.txwb.com/read-htm-tid-248479.html 这两个不对啊。这个函数。是要先通过盘符然后取得GUID。来改盘符的。试过了。;。 unit uMain;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TMainfrm = class(TForm) btn1: TButton; lbledt1: TLabeledEdit; lbledt2: TLabeledEdit; mmo1: TMemo; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Mainfrm: TMainfrm; _GetVolumeNameForVolumeMountPoint: function (lpszVolumeMountPoint: LPCSTR;lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL; stdcall;_SetVolumeMountPoint: function (lpszVolumeMountPoint: LPCSTR;lpszVolumeName: LPCSTR): BOOL; stdcall;_DeleteVolumeMountPoint: function (lpszVolumeMountPoint: LPCSTR): BOOL; stdcall;implementation{$R *.dfm}function GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint: LPCSTR;lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL;varKernel32: THandle;beginif not Assigned(_GetVolumeNameForVolumeMountPoint) thenbeginKernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));if Kernel32 <> 0 then @_GetVolumeNameForVolumeMountPoint :=GetProcAddress(Kernel32, PChar( ' GetVolumeNameForVolumeMountPointA ' ));end;if Assigned(_GetVolumeNameForVolumeMountPoint) thenResult := _GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName, cchBufferLength)elseResult := False;end;function SetVolumeMountPoint(lpszVolumeMountPoint: LPCSTR; lpszVolumeName: LPCSTR): BOOL;varKernel32: THandle;beginif not Assigned(_SetVolumeMountPoint) thenbeginKernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));if Kernel32 <> 0 then@_SetVolumeMountPoint := GetProcAddress(Kernel32, PChar( ' SetVolumeMountPointA ' ));end;_SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName);{if Assigned(_SetVolumeMountPoint) thenResult := _SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName)elseResult := False; }end;function DeleteVolumeMountPoint(lpszVolumeMountPoint: LPCSTR): BOOL;varKernel32: THandle;beginif not Assigned(_DeleteVolumeMountPoint) thenbeginKernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));if Kernel32 <> 0 then @_DeleteVolumeMountPoint := GetProcAddress(Kernel32, PChar( ' DeleteVolumeMountPointA ' ));end;if Assigned(_DeleteVolumeMountPoint) thenResult := _DeleteVolumeMountPoint(lpszVolumeMountPoint)elseResult := False;end;procedure TMainfrm.btn1Click(Sender: TObject);varVolumeName: array [0..MAX_PATH] of Char;beginGetVolumeNameForVolumeMountPoint(PChar(lbledt1.Text), VolumeName, MAX_PATH);//获取制定分区的GUIDDeleteVolumeMountPoint(PChar(lbledt1.Text));//删除制定分区盘符SetVolumeMountPoint(PChar(lbledt2.Text), VolumeName);//根据获取的GUID设置新的盘符end;end.这段代码,一运行就报错,不知,你呢如何? 关于不规则图形(其中颜色也各不相同)如何计算的问题 线程池概念 新手上路:delphi怎么样使用vc的com啊,操作步骤或者推荐书籍,谢谢…… 怎样在一个单元中访问另一个单元的SQLDataSet的属性 求button1的click事件的写法 如何在B/S结构中调用多媒体程序呢? 有关表单自动增长的问题,求助 VB+SQLSERVER组合和DELPHI+SQLSERVER组合哪个更好 请问那个城市需要DELPHI人才最多!!! 为何我的Datetimepicker在对年份进行编辑时会出错? 指示灯控件 delphi Tolesyserror "没有注册类别"
http://bbs.txwb.com/read-htm-tid-248479.html
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TMainfrm = class(TForm)
btn1: TButton;
lbledt1: TLabeledEdit;
lbledt2: TLabeledEdit;
mmo1: TMemo;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Mainfrm: TMainfrm;
_GetVolumeNameForVolumeMountPoint: function (lpszVolumeMountPoint: LPCSTR;
lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL; stdcall;
_SetVolumeMountPoint: function (lpszVolumeMountPoint: LPCSTR;
lpszVolumeName: LPCSTR): BOOL; stdcall;
_DeleteVolumeMountPoint: function (lpszVolumeMountPoint: LPCSTR): BOOL; stdcall;implementation{$R *.dfm}function GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint: LPCSTR;
lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL;
var
Kernel32: THandle;
begin
if not Assigned(_GetVolumeNameForVolumeMountPoint) then
begin
Kernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));
if Kernel32 <> 0 then @_GetVolumeNameForVolumeMountPoint :=
GetProcAddress(Kernel32, PChar( ' GetVolumeNameForVolumeMountPointA ' ));
end;
if Assigned(_GetVolumeNameForVolumeMountPoint) then
Result := _GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName, cchBufferLength)
else
Result := False;
end;function SetVolumeMountPoint(lpszVolumeMountPoint: LPCSTR; lpszVolumeName: LPCSTR): BOOL;
var
Kernel32: THandle;
beginif not Assigned(_SetVolumeMountPoint) then
begin
Kernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));
if Kernel32 <> 0 then
@_SetVolumeMountPoint := GetProcAddress(Kernel32, PChar( ' SetVolumeMountPointA ' ));
end;
_SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName);
{if Assigned(_SetVolumeMountPoint) then
Result := _SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName)
else
Result := False; }
end;function DeleteVolumeMountPoint(lpszVolumeMountPoint: LPCSTR): BOOL;
var
Kernel32: THandle;
begin
if not Assigned(_DeleteVolumeMountPoint) then
begin
Kernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));
if Kernel32 <> 0 then @_DeleteVolumeMountPoint := GetProcAddress(Kernel32, PChar( ' DeleteVolumeMountPointA ' ));
end;
if Assigned(_DeleteVolumeMountPoint) then
Result := _DeleteVolumeMountPoint(lpszVolumeMountPoint)
else
Result := False;
end;procedure TMainfrm.btn1Click(Sender: TObject);
var
VolumeName: array [0..MAX_PATH] of Char;
begin
GetVolumeNameForVolumeMountPoint(PChar(lbledt1.Text), VolumeName, MAX_PATH);//获取制定分区的GUID
DeleteVolumeMountPoint(PChar(lbledt1.Text));//删除制定分区盘符
SetVolumeMountPoint(PChar(lbledt2.Text), VolumeName);//根据获取的GUID设置新的盘符
end;
end.
这段代码,一运行就报错,不知,你呢如何?