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