AGB  ·  Datenschutz  ·  Impressum  







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

Icon aus DLL laden

Ein Thema von Pseudemys Nelsoni · begonnen am 23. Aug 2003 · letzter Beitrag vom 8. Aug 2015
Antwort Antwort
Seite 3 von 3     123   
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#21

Re: Icon aus DLL laden

  Alt 8. Nov 2003, 12:19
Moin Homer,

hast Du auch schon mal die Kurzform probiert?

Delphi-Quellcode:
Function Icon_Lesen_GU(icon_nr_s : String) : TIcon;

var
  h :HINST;

begin
  Result := nil;
  h := LoadLibrary('image.dll');
  try
    if h <> 0 then
    begin
      Result := TIcon.Create;
      Result.Handle := LoadIcon(h, PChar(icon_nr_s));
    end;
  finally
    FreeLibrary(h);
  end;
end;
Für Bitmaps gibt's auch LoadBitmap.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#22

Re: Icon aus DLL laden

  Alt 9. Nov 2003, 14:15
hier liegt die würze in der kürze
danke
aber nur den handle übergeben .. hmm und nicht das icon ? verstehen tu ich es aber nicht
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#23

Re: Icon aus DLL laden

  Alt 9. Nov 2003, 14:26
Moin Homer,

da das Result als TIcon deklariert ist, wird ja nicht nur das Handle übergeben.
Bei derartigen Funktionsergebnistypen würde ich das eh' eher so machen, dass das Ergebnis als Parameter zurückgeliefert wird, und nicht im Result. Ist aber wohl auch Geschmackssache.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#24

Re: Icon aus DLL laden

  Alt 9. Nov 2003, 17:11
geschmackssache ???
nur so geht es. also bei icons.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#25

Re: Icon aus DLL laden

  Alt 9. Nov 2003, 20:19
Moin Homer,

wenn ich das so mache, kann ich das Icon, was ich zurückerhalten will auch als Parameter übergeben:

Delphi-Quellcode:
function (const AsIconname : string;const AicResult : TIcon) : boolean; // true = Success
var
  h :HINST;

begin
  Result := false;
  h := LoadLibrary('image.dll');
  try
    if h <> 0 then begin
      AicResult.Handle := LoadIcon(h, PChar(AsIconname));
      Result := true;
    end;
  finally
    FreeLibrary(h);
  end;
end;
Die Funktion lässt sich dann nur nicht so schön einbinden, aber ich habe eine bessere Übersicht über die belegten Resourcen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#26

Re: Icon aus DLL laden

  Alt 9. Nov 2003, 21:24
ne las mal deine kurzform funktioniert wunderbar
genau so wie es haben wollt
ich glaube es gib mit TICON ein generelles Problem
auch aus einer resource oder dll zu laden

hier meine function um es aus dll usw zu extrahieren

Code:
//******************************************************************************
// HauptFunction
//Icon aus exe dll usw ins Image ausgeben
Procedure Icon_Extract_GU(input_s : String; kompo_s : String);
var
bild_path_s : String;
icon : TIcon;
path_s : String;
pos_i : Integer;
index_i : Integer;
begin

    try
        //Platzhalter ersetzen //für %Root% und so
        bild_path_s := Platzhalter_Ersetzen_GU(input_s);

        //Alles rücksetzen
        icon := TIcon.Create;
        path_s := '';

        //Kein Komma verhanden
        if pos(',', bild_path_s) = 0 then
         begin
            bild_path_s := bild_path_s + ',0';
            pos_i := pos(',', bild_path_s);
        end
        //Komma vorhanden
        else
        begin
            pos_i := pos(',', bild_path_s);
        end;

        //Path filtern
        path_s := copy(bild_path_s, 1, pos_i - 1);

        //Index filtern
        index_i := StrToInt(copy(bild_path_s, pos_i + 1, Length(bild_path_s)));

        icon.Handle := ExtractIcon(hInstance,PChar(path_s),index_i);

        (Haupt_Form.FindComponent(kompo_s) as TImage).Picture.Icon := icon;
    finally
        icon.Free;
    end;
end;
  Mit Zitat antworten Zitat
tcoman
(Gast)

n/a Beiträge
 
#27

AW: Re: Icon aus DLL laden

  Alt 8. Aug 2015, 18:52
ich hab das gleich problem
mein code
Code:
//******************************************************************************
//Global
//Icon aus Image.dll
Function Icon_Lesen_GU(icon_nr_s : String) : TIcon;
var
lib_h : THandle;
res_s : TResourceStream;
icon_ic : TIcon;
begin
    lib_h := LoadLibrary('Image.dll');

    if (lib_h <> 0) then
    begin
        res_s := TResourceStream.Create(lib_h, icon_nr_s, RT_ICON);
        icon_ic := TIcon.Create;
        try
            icon_ic.LoadFromStream(res_s);
            Result := icon_ic;
        finally
            res_s.Free;
            icon_ic.Free;
        end;
        FreeLibrary(lib_h);
    end;
end;
mit einem anderen progamm hab ich mal in die ddl geschaut, ist alles drin
er zeigt mir immer wieder die resurce nicht gefunden an
der code ist doch richtig ? warum geht es nicht
Grüß Dich HomerGER,
in der DLL müssen die Namen der Icons in
GROSSBUCHSTABEN stehen! Vllt erklärt das deine
Fehlermeldung "nicht gefunden".

Gruß,
tcoman
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: Icon aus DLL laden

  Alt 8. Aug 2015, 19:53
Der letzte Post ist fast 12 Jahre her
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 20:19 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