Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Icons aus shell32.dll auslesen (https://www.delphipraxis.net/57110-icons-aus-shell32-dll-auslesen.html)

maze2000 15. Nov 2005 23:11


Icons aus shell32.dll auslesen
 
Hallo allerseits,

ich würde gerne Icons aus der shell32.dll auslesen und einem TImage zuweisen. Basierend auf einem anderen Thread im Forum habe ich es mit folgender Funktion versucht:

Delphi-Quellcode:
Function TfrmMain.IconLesen(icon_nr_s : string) : TIcon;

var
h :HINST;

begin
  Result := nil;
  h := LoadLibrary('c:\windows\system32\shell32.dll');
  try
    if h <> 0 then
    begin
      Result := TIcon.Create;
      Result.Handle := LoadIcon(h, icon_nr_s);
    end;
  finally
    FreeLibrary(h);
  end;
end;
Es funktioniert aber leider nicht, zumal ich leider auch nicht die Nummern bzw. die Bezeichnungen der Ressourcen in der shell32.dll kenne. In h habe ich stets einen korrekten Handle, aber Result.Handle bleibt Null. Würde mich riesig freuen, wenn ihr mir weiterhelfen könnt! Ich würde gerne bestimmte Icons aus der shell32.dll in den Dialogen meiner Anwendung benutzen.

Delphi rules,
Matthias

neolithos 15. Nov 2005 23:31

Re: Icons aus shell32.dll auslesen
 
Ich mach das für gewöhnlich über diese Function MSDN-Library durchsuchenExtractIcon.

runger 16. Nov 2005 06:18

Re: Icons aus shell32.dll auslesen
 
Hallo,

ändere das Ganze so um dann geht's:

Delphi-Quellcode:
Function IconLesen(icon_nr_s : cardinal) : TIcon;

var
h :HINST;

begin
  Result := nil;
//  h := LoadLibrary('c:\shell32.dll');
  try
    if h <> 0 then
    begin
      Result := TIcon.Create;
//      Result.Handle := LoadIcon(h, icon_nr_s);
      Result.Handle := ExtractIcon(application.handle,'c:\windows\system32  \shell32.dll', icon_nr_s);
    end;
  finally
    FreeLibrary(h);
  end;
end;
unter uses bindest du shellapi ein und im Aufruf gibst du eine Zahl als Idendifikation an. Den Pfad für shell32.dll musst du eventuell korridieren.

Viel Spass Rainer

himitsu 16. Nov 2005 06:27

Re: Icons aus shell32.dll auslesen
 
@runger
so wie ich das jetzt sehe, dann wird bei deinem Code doch das Handle auf shell32.dll garnicht verwendet, demnach könnte dann ja das Ganze mit LoadLibrary entfallen?
Delphi-Quellcode:
Function IconLesen(icon_nr_s : cardinal) : TIcon;
begin
  Result := TIcon.Create;
  Result.Handle := ExtractIcon(application.handle,'c:\windows\system32\shell32.dll', icon_nr_s);
end;

runger 16. Nov 2005 08:38

Re: Icons aus shell32.dll auslesen
 
Hallo danke,

das hab ich verpennt! Hab den Code nur soweit geändert, dass er funktioniert.


Danke
Rainer

maze2000 22. Nov 2005 09:39

Re: Icons aus shell32.dll auslesen
 
Super, es funktioniert!!!!!

Vielen Dank, ihr seid die Besten!

Schönen Tag noch,
Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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-2025 by Thomas Breitkreuz