Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#6

AW: TAudioVolume Komponente incl. System Mixer

  Alt 6. Mai 2018, 22:29
Ich habe jetzt die funktion geändert.
Höheren MAXSIZE addiert und den String nochmals gesplittet um die richtige länge der ID zu extrahieren.

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

  // Remove First @ Letter
  Filename := MidStr(IconPath, 2, Length(IconPath));
  // Extract ID
  SplitID := Split(Filename, ',');
  rSplitID := SplitID[High(SplitID)];
  rSplitID := MidStr(rSplitID, 2, Length(rSplitID));

  ID := StrToInt(rSplitID);
  // Remove ID from Path
  Filename := LeftStr(Filename, Length(Filename) - 5);

  FillChar(lpDest, SizeOf(lpDest), 0);
  if ExpandEnvironmentStrings(PWideChar(Filename), lpDest, 32768) <> 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;
Update kommt später muss noch einiges andere tun.. zum Beispiel den Namen kürzen wenn zu lang für die GroupBox.
Tool Tipps addieren um den Kompletten Namen anzuzeigen wenn gekürzt
Lautsprecher Icon addieren usw..

gruss

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