Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Icon 235 zeigt Windows an, aber Delphi extrahiert es nicht (https://www.delphipraxis.net/75359-icon-235-zeigt-windows-aber-delphi-extrahiert-es-nicht.html)

Nils_13 18. Aug 2006 11:10


Icon 235 zeigt Windows an, aber Delphi extrahiert es nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich extrahiere die Windowsicons aus der shell32.dll. Das Icon 235 müsste eigentlich das Icon für 'Eigene Dateien' sein, wird aber in meinem Programm durch eine Art Icon ersetzt, welches darstellen soll, dass dieses Icon kaputt gegangen ist. Das kann aber nicht sein, da mir Windows und ein Programm zum Icon extrahieren das Icon korrekt unter der Id 235 anzeigt (siehe Avatar). Hier erstmal der Code:
Delphi-Quellcode:
function TfrmMain.IconLesen(icon_nr_s : cardinal) : TIcon;
var s : PAnsiChar;
begin
  Result := TIcon.Create;
  s := 'C:\Windows\system32\shell32.dll';
  Result.Handle := ExtractIcon(Application.Handle, s, icon_nr_s);
end;

// ...

IconLesen(235);
Außerdem würde ich gerne noch wissen, wie ich den Code mit der GetWinDir-Funktion erweitern könnte, denn s erwartet PAnsiChar und GetWinDir liefert String zurück:
Delphi-Quellcode:
function TfrmMain.GetWinDir: String;
var
  Buffer: PAnsiChar;
  Len:Cardinal;
begin
  Buffer := nil;
  Len := GetWindowsDirectory(Buffer,0);

  Buffer := allocMem(Len);
  GetWindowsDirectory(Buffer,Len);

  Result := Buffer;
  FreeMem(Buffer);
end;
Die Listen scheinen aber alle unterschiedlich zu sein und eine auf Delphi bezogene Liste habe ich noch nicht gefunden.

NicoDE 18. Aug 2006 13:17

Re: Icon 235 zeigt Windows an, aber Delphi extrahiert es nic
 
Zitat:

Zitat von Nils_13
das Icon korrekt unter der Id 235 anzeigt

Der Parameter nIconIndex von ExtractIcon ist ein Index auf die RT_GROUP_ICON-Ressourcen. Wenn du ein Icon mittels ID extrahieren willst, dann musst du in nIconIndex die negative Ressourcen-ID übergeben.

3_of_8 18. Aug 2006 13:44

Re: Icon 235 zeigt Windows an, aber Delphi extrahiert es nic
 
Und zum zweiten: Zwei Fragen, zwei Threads.

ich will aber mal nicht so sein und kann dir sagen, dass du Stringvariablen implizit nach PChar casten kannst und umgekehrt. Stringliterale kannst du explizit casten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz