procedure TForm1.Button1Click(Sender: TObject);
var
str1: string;
str2: string;
lon1: longint;
lon2: longint;
strt: longint;
begin
setlength(str1,256);
setlength(str2,256);
windows.GetVolumeInformation('c:\',PChar(str1),256,strt,lon1,lon2,
PChar(str2),256);
Edit1.Text:=string(strt);
end;
我用这个API函数想得到当前硬盘的序列号,API函数的第4个参数为PDWARD(32位无符号整型指针)这个数据类型在DP里面怎么转换列?
var
str1: string;
str2: string;
lon1: longint;
lon2: longint;
strt: longint;
begin
setlength(str1,256);
setlength(str2,256);
windows.GetVolumeInformation('c:\',PChar(str1),256,strt,lon1,lon2,
PChar(str2),256);
Edit1.Text:=string(strt);
end;
我用这个API函数想得到当前硬盘的序列号,API函数的第4个参数为PDWARD(32位无符号整型指针)这个数据类型在DP里面怎么转换列?
function Get_DiskSerialNo(DriveID : char) : string;
var
VolumeSerialNumber : DWORD;
MaximumComponentLength : DWORD;
FileSystemFlags : DWORD;
ps:PChar;
st:String;
dt:DWORD;
begin
ps:=PChar(DriveID + ':\');
GetVolumeInformation(ps,nil, 0, @VolumeSerialNumber,MaximumComponentLength, FileSystemFlags,nil, 0);
DT:=GetDriveType(ps);
st:='';
Case dt of
0:st:='Can not determined';
1:st:='Disk not existsed';
DRIVE_REMOVABLE:st:='REMOVABLED';
DRIVE_FIXED:st:='FIXED';
DRIVE_REMOTE:st:='REMOTE';
DRIVE_CDROM:st:='CDROM';
DRIVE_RAMDISK:st:='RAMDISK';
end;
result := IntToHex(HiWord(VolumeSerialNumber), 4) +'-' + IntToHex(LoWord(VolumeSerialNumber), 4)+' Type:'+st;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=Get_DiskSerialNo(DriveComboBox1.Drive);
end;
var
VolumeSerialNumber : DWORD;
MaximumComponentLength : DWORD;
FileSystemFlags : DWORD;
begin
if Drv[Length(Drv)] =':' then Drv := Drv + '\';
GetVolumeInformation(pChar(Drv),nil,0,@VolumeSerialNumber,MaximumComponentLength,FileSystemFlags,nil,0);
Result:= (VolumeSerialNumber);
end;procedure TMainForm.ComboBox1Change(Sender: TObject);
var
x:integer;
driver:pchar;
begin
driver:=PChar(ComboBox1.Text);
x := GetDriveType(driver);
if (x<>2) and (X<>3) and (x<>4) and (x<>5) and (x<>6) then
Edit2.Text :='你所选择的磁盘无效!'
else
Edit2.Text := IntToStr(GetHDNumber(ComboBox1.Text));
end;