Zitat:
denn das Icon wird daraus schon wesentlich früher gelesen, sofern es nicht eh bereits aus dem Iconcache ausgelesen wurde.
Woher willst du das so genau wissen wann ich das Icon einlese?
Zitat:
Was hat das Startmenü damit zu tun? Du gibst ShellExecute einfach direkt die LNK, ist doch kein Problem. Oder übersehe ich was?
Wie ich schon schrieb die Pfade sind nicht nur für die *.lnk Dateien ausgelegt sondern für unterschiedliche.
Es gibt *.URL, *.lnk und User definierte Ausführbare Icons auf der Bar.
Für euch außenstehende ist das kein Problem... ja mach mal eben.
Aber ihr kennt den Aufwand nicht der betrieben werden muss
damit das nachher auch alles seine Richtigkeit hat.
Aber gut habe eine Lösung gefunden.
Ich prüfe ob ein Link existiert. If DoLnk >>
dann übergebe ich normalerweise den Target Pfad also den wo sich die Exe befindet.
Delphi-Quellcode:
if DoLnk then
begin
gS[nCount].ShellTo := Lowercase(sTarget); // <<<< Target = 'C:\Windows\Installer\{90160000-0011-0000-1000-0000000FF1CE}Icon.40BB677D.0A7A.4D43.9F72.5AE6F0E9 7EE2.exe'
gS[nCount].WorkDir := PWideChar(pLnk.WorkDir);
gS[nCount].CmdLine := PWideChar(pLnk.Arguments);
gS[nCount].ShowCmd := integer(pLnk.ShowCmd);
gS[nCount].CtrlName := sTxt;
gS[nCount].CtrlIndex := nCount;
end;
gS[nCount].UseLabel := sTxt;
den ändere ich jetzt um auf
gS[nCount].ShellTo := Lowercase(sFullName); // <<<< 'C:\Users\Gast\Desktop\Word 2016.lnk'
damit sollte das Problem erstmal erledigt sein. (Muss das aber noch überwachen).
gruss