Thema: Delphi Das Handle ist ungültig

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#87

AW: Das Handle ist ungültig

  Alt 6. Mai 2018, 20:47
Jetzt habe ich verstanden.. Warum schwer machen wenn es auch einfach geht.

Delphi-Quellcode:
procedure TAudioVolume.LoadIconPathfromResource(IconPath: PWideChar);
var
  Module: HModule;
  Filename: string;
  StrID: string;
  ID: DWORD;
  lpDest: PWideChar;
begin

  lpDest := nil;
  // Remove First @ Letter
  Filename := MidStr(IconPath, 2, Length(IconPath));
  // Extract ID
  StrID := MidStr(Filename, Length(Filename) - 2, 4);
  ID := StrToInt(StrID);
  // Remove ID from Path
  Filename := LeftStr(Filename, Length(Filename) - 5);

  ExpandEnvironmentStrings(PWideChar(Filename), lpDest, Length(Filename));

  if Assigned(lpDest) then
  begin
    // Load the Lib
    Module := LoadLibraryExW(lpDest, 0, LOAD_LIBRARY_AS_DATAFILE);
    // check for error
    if Module <> INVALID_HANDLE_VALUE then
    begin
      Icon := TIcon.Create;
      Icon.Handle := LoadIcon(Module, MakeIntResource(ID));
      if Module <> 0 then
        FreeLibrary(Module);
    end;
  end;
end;
Kann hier den Filename "StrID" noch splitten damit falls die ID mal <> 3 sein sollte es immer noch funktioniert.

gruss

Geändert von EWeiss ( 6. Mai 2018 um 21:05 Uhr)
  Mit Zitat antworten Zitat