AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Icons aus shell32.dll auslesen

Ein Thema von maze2000 · begonnen am 16. Nov 2005 · letzter Beitrag vom 22. Nov 2005
Antwort Antwort
maze2000

Registriert seit: 15. Nov 2005
2 Beiträge
 
#1

Icons aus shell32.dll auslesen

  Alt 16. Nov 2005, 00:11
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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Icons aus shell32.dll auslesen

  Alt 16. Nov 2005, 00:31
Ich mach das für gewöhnlich über diese Function MSDN-Library durchsuchenExtractIcon.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#3

Re: Icons aus shell32.dll auslesen

  Alt 16. Nov 2005, 07:18
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Icons aus shell32.dll auslesen

  Alt 16. Nov 2005, 07:27
@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;
$2B or not $2B
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#5

Re: Icons aus shell32.dll auslesen

  Alt 16. Nov 2005, 09:38
Hallo danke,

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


Danke
Rainer
  Mit Zitat antworten Zitat
maze2000

Registriert seit: 15. Nov 2005
2 Beiträge
 
#6

Re: Icons aus shell32.dll auslesen

  Alt 22. Nov 2005, 10:39
Super, es funktioniert!!!!!

Vielen Dank, ihr seid die Besten!

Schönen Tag noch,
Matthias
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz