Achso alles klar. Hab es ja jetzt eh ohne die Funktion gelöst. Ich hoff meine Lösung ist "gut" programmiert:
Delphi-Quellcode:
procedure TForm1.GetDrives;
var
Drive: Char;
DriveMask: Integer;
Flag: Integer;
FileInfo: TSHFileInfo;
begin
DriveMask := GetLogicalDrives; //Bitmaske holen
flag := 1; //Startflag setzen
for Drive := 'A' to 'Z' do //Jeden Buchstaben gegenprüfen
begin
if (flag and DriveMask) <> 0 then
begin
if (GetDriveType(PChar(Format('%S:',[Drive]) ) ) = 2) then begin
ComboPath.Add(Drive);
SHGetFileInfo(PChar(Format('%S:\',[Drive])), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_LARGEICON or SHGFI_TYPENAME or SHGFI_DISPLAYNAME or SHGFI_SYSICONINDEX);
ComboIcons.Add(IconToBitmap(FileInfo.hIcon),nil); //Icons zu einer ImageList hinzufügen
ComboNames.Add(FileInfo.szDisplayName); //Namen zu einer StringList hinzufügen
end;
end;
flag := flag shl 1; //Ein Bit weiter nach links gehen ( = flag * 2)
end;
end;