Avatar billede weis Nybegynder
17. marts 2001 - 20:36 Der 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...

Kan det forståes....

Andreas
Avatar billede nca Juniormester
18. marts 2001 - 11:41 #1
Navnet på CD-en må du kunne finde ved at læse volumen-navnet. Et evt ikon kan du finde navnet på i autorun/icon
Avatar billede weis Nybegynder
18. marts 2001 - 15:39 #2
>>nca

Kunne du komme med en mere detaljert svar... måske???
Avatar billede ravn1 Nybegynder
18. marts 2001 - 15:52 #3
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...
Avatar billede nca Juniormester
18. marts 2001 - 17:00 #4
>>Weis
Kender du drevbogstavet på det drev du vil undersøge?
Avatar billede weis Nybegynder
18. marts 2001 - 17:40 #5
>>nca

Drevet hedder E:\\
Avatar billede nca Juniormester
18. marts 2001 - 17:45 #6
Her er en stump kode til at aflæse CD\'ens navn

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.
Avatar billede weis Nybegynder
18. marts 2001 - 19:16 #7
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...



Avatar billede nca Juniormester
18. marts 2001 - 19:38 #8
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;
Avatar billede weis Nybegynder
19. marts 2001 - 11:09 #9
>>>nca

Jeg har nogle problemer med Icon koden... Jeg bruger dette her for at åbne drevet...

procedure TMainForm.Button1Click(Sender: TObject);
begin
  If Button1.Caption = \'Åben CD-drev F:\\\' then begin
    OpenCloseCD(\'F:\\\',True); //Åben drev
    Button1.Caption := \'Luk CD-drev F:\\\';
  end
  else begin
    OpenCloseCD(\'F:\\\',False); //Luk drev
    Button1.Caption := \'Åben CD-drev F:\\\';
  end;
end;

Og jeg har prøve at indsætte koden flere sted men den laver fejl...

Kunne du ikke skrive hvor de forskellige koder skulle side???

Andreas
Avatar billede nca Juniormester
20. marts 2001 - 17:56 #10
>>> 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
Avatar billede weis Nybegynder
21. marts 2001 - 14:05 #11
Se her....

Problemet ligger i denne sætning \"Reg: TIniFile;\" den melder fejl i hele sætningen og jeg ved ikke hvorfor???

Og label tekste... den skriver [wb] hver gang den bliver opdateret... Ved ikke hvorfor???

Andreas
Avatar billede weis Nybegynder
21. marts 2001 - 15:56 #12
Jeg har nu fundet udaf hvordan jeg får opdateret cd navnet...
men jeg mangler stadigvæk at få indsat et ikon....

Stadig \"Reg: TIniFile;\" fejlen....
Avatar billede nca Juniormester
21. marts 2001 - 20:43 #13
Du skal tilføje Registry under uses
Avatar billede weis Nybegynder
21. marts 2001 - 21:51 #14
Hvor ligger \"uses\"... og nu kommer der ikke andre ting som man skal gøre i kodningen sener...

Andreas
Avatar billede weis Nybegynder
21. marts 2001 - 22:21 #15
Jeg tror nok jeg ved hvor koden skal sidde nu...

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, MMSystem, ExtCtrls, Registry;

Hvis det er rigtigt er det da et skridt frem, men men men jeg har stadigvæk fejl med samme sætning og ved stadigvæk ikke hvorfor???

Andreas
Avatar billede nca Juniormester
21. marts 2001 - 23:09 #16
Hej Andreas
Send mig din email-adresse, så skal du få et program til test.
Avatar billede weis Nybegynder
22. marts 2001 - 12:00 #17
ok...

0991aweis@elev.daks.dk

Andreas
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester