17. marts 2001 - 20:36Der er
16 kommentarer og 1 løsning
Ikon på Cd-drev
Når jeg har lavet et program der kan åbne og lukke et Cd-drev. Så vil jeg ger ne have at der skal være et ikon af cd-drevet. Det vil sige at, når der ikke er en cd i drevet skal der være et standart ikon, men når der kommer en cd i der har sit eget ikon og navn skal det vises på formen...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Nu kender jeg ikke til delphi, men du kunne jo bare sætte den til at kigge i x:\\autorun.ini(x=cdromdrevet) der står jo iconets navn fx x:\\icon.ico, ligesom weis siger...
function VolumeID(DriveChar: Char): string; var OldErrorMode : Integer; NotUsed, VolFlags : DWORD; Buf : array [0..MAX_PATH] of Char; begin OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS); try GetVolumeInformation(PChar(DriveChar + \':\\\'), Buf, sizeof(Buf), nil, NotUsed, VolFlags, nil, 0); Result := Format(\'[%s]\',[Buf]); finally SetErrorMode(OldErrorMode); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=VolumeID(\'d\'); end;
Hvis du kikker i filen Autorun.inf under nøglen [Autorun] findes der nogle gange en værdi der hedder Icon= Efter lighedstegnet kan stå navnet på en exe-fil, fx. Start.exe,0 hvor tallet så angiver nummeret på ikonet i den pågældense fil. Andre gange står der bare navnet på en ico-fil, som så ligger i roden på CD\'en.
Jeg har lige forsøgt idén, men jeg kan ikke få navnet frem. Jeg ændrede \"Label1.Caption:=VolumeID(\'d\');\" til \"Label1.Caption:=VolumeID(\'E\');\" men det eneste der kom til at stå var [] det virkede desværre ikke...
Det forstår jeg ikke. Hvilket operativsystem bruger du? Jeg har forsket lidt videre. Her har du en kode til at finde ikonet.
procedure TForm1.Button4Click(Sender: TObject); var Reg: TIniFile; IC: HIcon; Iconname:String; IconNr:Integer; DriveLetter: String; begin DriveLetter:=\'D:\\\'; Reg:=TIniFile.Create(DriveLetter+\'Autorun.inf\'); if Reg.SectionExists(\'autorun\') then IconName:=Reg.ReadString(\'autorun\',\'Icon\',\'\'); if pos(\'.exe\',IconName)>0 then begin if pos(\',\',IconName)>0 then begin IconNr:=StrToInt(Copy(IconName,pos(\',\',IconName)+1,Length(IconName))); Iconname:=Copy(Iconname,1,pos(\',\',IconName)-1); IC:=ExtractIcon(HInstance,PChar(Driveletter+IconName),IconNr); Image1.Picture.Icon.Handle:=IC; end; end else Image1.Picture.LoadFromFile(Driveletter+Iconname); Reg.Free; end;
>>> Weis Jeg kan se at du ikke har så mange point, men er det ikke lidt lousy kun at gi\' 20 point for så meget hjælp? Send mig din email adresse, så skal jeg sende et testprogram til dig
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.