/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
System icon
Fra : Michael Hansen


Dato : 09-12-00 18:02

Hej NG !

Er der en måde hvorpå jeg kan få fat i det icon som er associeret til en
bestemt filtype. Jeg er altså interesseret i at få fat i index-nummeret til
fx .exe-filer.

--
mvh
Michael Hansen - michael@am-service.dk



 
 
Yngve Damgaard (10-12-2000)
Kommentar
Fra : Yngve Damgaard


Dato : 10-12-00 23:33


"Michael Hansen" <mbh@it.dk> skrev i en meddelelse
news:90ugal$2ija$1@news.cybercity.dk...
> Hej NG !
>
> Er der en måde hvorpå jeg kan få fat i det icon som er associeret til en
> bestemt filtype. Jeg er altså interesseret i at få fat i index-nummeret
til
> fx .exe-filer.
>
> --
> mvh
> Michael Hansen - michael@am-service.dk


Hej Michael.
Filer af typen exe har jo mange forskellige ikoner og
derfor vil deres IconIndex være forskellige.
Alle filer med extension TXT vil almindeligvis være associeret til
Notepad.exe
og har derfor samme IconIndex.

Check det med nedenstående eks.

Yngve

uses ShellApi;
function GetIconIndex(const FileName: string; Attr: DWORD): integer;
var
SHFileInfo: TSHFileInfo;
begin
SHGetFileInfo(PChar(FileName), Attr, SHFileInfo, SizeOf(TSHFileInfo),
SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES);
Result := SHFileInfo.iIcon;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
label1.caption := inttostr(GetIconIndex('C:\Windows\Calc.exe',
faAnyFile));
label2.caption := inttostr(GetIconIndex('C:\Windows\NotePad.exe',
faAnyFile));
end;






Thomas Due (11-12-2000)
Kommentar
Fra : Thomas Due


Dato : 11-12-00 08:38

Nu lige netop .exe er nok et dårligt eksempel, så lad os bruge .txt istedet
for.
Du slår op i registreringsdatabasen under HKEY_CLASSES_ROOT.
Der finder du en sektion som hedder .txt. I den aflæser du (Default) nøglen.
Denne
indikere hvilken sektion du finder de forskellige oplysninger under.

I .txt tilfældet er det "txtfile".

Under txtfile ser vi en subsektion der hedder DefaultIcon. I denne har du en
nøgle der hedder (Default). Værdien der er tilknyttet denne hedder (på mit
system,
det kan måske variere) "%SystemRoot\system32\shell32.dll, -152".

Dvs. at standard ikonet er hentet fra filen shell32.dll hvor det er
index -152. Det giver
selvfølgelig ingen mening at ikonerne kan have negativt index. Men
fremgangsmåden
virker i det store og hele. Hvordan index -152 så lige skal fortolkes kan
jeg ikke
forklare.

Mvh
Thomas Due

"Michael Hansen" <mbh@it.dk> wrote in message
news:90ugal$2ija$1@news.cybercity.dk...
> Hej NG !
>
> Er der en måde hvorpå jeg kan få fat i det icon som er associeret til en
> bestemt filtype. Jeg er altså interesseret i at få fat i index-nummeret
til
> fx .exe-filer.
>
> --
> mvh
> Michael Hansen - michael@am-service.dk
>
>



Michael Thomsen (11-12-2000)
Kommentar
Fra : Michael Thomsen


Dato : 11-12-00 22:03

Thomas Due wrote:

> Under txtfile ser vi en subsektion der hedder DefaultIcon.
> I denne har du en nøgle der hedder (Default). Værdien der er
> tilknyttet denne hedder (på mit system, det kan måske variere)
> "%SystemRoot\system32\shell32.dll, -152".

> Dvs. at standard ikonet er hentet fra filen shell32.dll hvor
> det er index -152. Det giver selvfølgelig ingen mening at
> ikonerne kan have negativt index. Men fremgangsmåden virker
> i det store og hele. Hvordan index -152 så lige skal fortolkes
> kan jeg ikke forklare.

Jeg har fornemmelsen af, at positive iconnumre er index, og
negative værdier er -absolut værdien.

index bruges med funktionerne ExtractIcon og ExtractIconEx mens
den absolutte værdi kan bruges med LoadIcon og MakeIntResource.

Det skal dog lige siges, at det er gætteri fra min side; men det
passer ret godt med de ikoner jeg har set.

I din streng står der %SystemRoot, det er vist kun NT/2000 der
skriver den slags; men findes der en funktion, der kan konvertere
disse tåbelige %koder til rigtige stier?

Alternativt, er der nogle, der har en liste over alle %koderne?
Jeg gætter på at %SystemRoot = getsystemdirectory

--
Regards 'n' stuff,
Michael Thomsen, Birkerød / Denmark

http://fly.to/thomsen

--- Letterman - Release 1 (Beta)
--- Do you listen to the voices you hear?

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste