Thema: Delphi Das Handle ist ungültig

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#92

AW: Das Handle ist ungültig

  Alt 6. Mai 2018, 20:29
Diese Funktion beinhaltet die API ExpandEnvironmentStrings doch schon warum mehr schreiben als nötig?
Dann kann ich auch diese von HolgerX verwenden das funktioniert.

PS:
Danke habe die zweite variante mit dem Array versucht
Ok funktioniert es wäre ein Fehler wenn die Rückgabe 0 ist.

so ist es richtig.

Delphi-Quellcode:
procedure TAudioVolume.LoadIconPathfromResource(IconPath: PWideChar);
var
  Module: HModule;
  Filename: WideString;
  lpDest: array[0..MAX_PATH] of WideChar;
  StrID: string;
  ID: DWORD;
begin

  // 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);

  FillChar(lpDest, SizeOf(lpDest), 0);
  if ExpandEnvironmentStrings(PWideChar(Filename), lpDest, Length(lpDest)) <> 0 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;
Manchmal wirklich

gruss

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