AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Ordnung muss sein (LaunchBar)

Ordnung muss sein (LaunchBar)

Ein Thema von EWeiss · begonnen am 17. Mai 2017 · letzter Beitrag vom 14. Nov 2021
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.989 Beiträge
 
Delphi 12 Athens
 
#1

AW: Ordnung muss sein (LaunchBar)

  Alt 16. Aug 2018, 05:44
Wie gesagt ich weis nicht warum Windows das macht und wie ich das verhindern kann.
Das wird doch unter deinem eigenen Link sehr gut beschrieben.
Zitat:
Advertised shortcuts allow installer authors to install only portions of their application and then install additional pieces when they are accessed via the advertised shortcut. Windows Installer also automatically checks the integrity of all of the installed files each time the application is run so you can be sure the application is valid when it is run.
Entscheidend ist daher, dass diese Anwendungen auch genau so ausgeführt werden und nicht über einen anderen Weg wie einem neuen Shortcut auf die Exe direkt.

Ich hatte aber auch noch nie ein Problem damit diese Links per ShellExecute auszuführen oder mit SHGetFileInfo ein Handle zu dem richtigen Icon zu bekommen (z.B. bei Word und Excel).

// EDIT:
Beispiel:
Delphi-Quellcode:
var
  ShFileInfo: TSHFileInfo;
begin
  SHGetFileInfo('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office\Microsoft Excel 2010.lnk', 0, ShFileInfo, SizeOf(TSHFILEINFO), SHGFI_ICON);
  Image1.Picture.Icon.Handle := ShFileInfo.hIcon;
end;
Sebastian Jänicke
AppCentral

Geändert von jaenicke (16. Aug 2018 um 05:47 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Ordnung muss sein (LaunchBar)

  Alt 16. Aug 2018, 05:45
Zitat:
oder mit SHGetFileInfo ein Handle zu dem richtigen Icon zu bekommen.
Ich bekomme aber das vom Installer warum auch immer.
Selber habe ich keinen Einfluss darauf wie Anwendungen ihre ShortCuts bzw.. Links erstellen.
Siehe Anhang als Beispiel.

Von der Anwendung bekomme ich das Icon vom Installer zurück geliefert.
Delphi-Quellcode:
procedure TWin32ShortCut.LoadShortCut(LnkName: WideString);
var
  FP: array[0..MAX_PATH * 2] of Char;
  pfd: TWin32FindDataW;
  showval: integer;
  psfi: TSHFileInfo;
begin
  ClearValues;
  FPersistFile.Load(PWideChar(LnkName), 0);

  FillChar(FP, Sizeof(FP), 0);
  FShellLink.GetPath(FP, Sizeof(FP), pfd, 0);
  FAppPath := String(FP);

  FShellLink.GetIDList(Fpidl);

  FillChar(FP, Sizeof(FP), 0);
  FShellLink.GetWorkingDirectory(FP, Sizeof(FP));
  FWorkDirectory := String(FP);

  FillChar(FP, Sizeof(FP), 0);
  FShellLink.GetArguments(FP, Sizeof(FP));
  FArguments := String(FP);

  FillChar(FP, Sizeof(FP), 0);
  FShellLink.GetDescription(FP, Sizeof(FP));
  FDescription := String(FP);

  FShellLink.GetShowCmd(showval);
  FShowCmd := cvtTShowType(showval);

  FShellLink.GetHotkey(FHotKey);
  HotKeyToShortCut(FHotKey, FHotKeyCtrl);


  FillChar(FP, Sizeof(FP), 0);
  FShellLink.GetIconLocation(FP, Sizeof(FP), FIconIndex); // <<<<< und zwar hier FP
  FIconPath := String(FP);

  if FIconPath = 'then
    begin
      SHGetFileInfo(PChar(FAppPath), 0, psfi, sizeof(psfi), SHGFI_ICON);
      FIcon.Handle := psfi.hIcon;
    end
  else
    FIcon.Handle := ExtractIcon(hInstance, PChar(FIconPath), FIconIndex);
end;
Zitat:
Ich hatte aber auch noch nie ein Problem damit diese Links per ShellExecute auszuführen
Es geht nicht um die Ausführung da habe ich auch kein Problem sondern um das auffinden des richtigen Pfades incl. des Icon.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.989 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ordnung muss sein (LaunchBar)

  Alt 16. Aug 2018, 05:58
Ich würde gar nicht erst GetIconLocation + ExtractIcon benutzen. SHGetFileInfo funktioniert (zumindest in allen Fällen, in denen ich es bisher genutzt und getestet habe) immer, egal was das für ein Shortcut oder was für eine andere Datei ist.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Ordnung muss sein (LaunchBar)

  Alt 16. Aug 2018, 05:59
Ich würde gar nicht erst GetIconLocation + ExtractIcon benutzen. SHGetFileInfo funktioniert (zumindest in allen Fällen, in denen ich es bisher genutzt und getestet habe) immer, egal was das für ein Shortcut oder was für eine andere Datei ist.
Du meinst als nur deine Methode?
SHGetFileInfo('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office\Microsoft Excel 2010.lnk', 0, ShFileInfo, SizeOf(TSHFILEINFO), SHGFI_ICON);

Hmmm.. muss ich mal testen.

EDIT:
Nein Funktioniert nicht. Siehe Pic!
Immer der Installer Pfad.

Auch wenn ich den LinkName direkt angebe
SHGetFileInfo(PChar(LnkName), 0, psfi, sizeof(psfi), SHGFI_ICON);

Bekomme ich das Installer Icon.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.989 Beiträge
 
Delphi 12 Athens
 
#5

AW: Ordnung muss sein (LaunchBar)

  Alt 16. Aug 2018, 07:47
Auch wenn ich den LinkName direkt angebe
SHGetFileInfo(PChar(LnkName), 0, psfi, sizeof(psfi), SHGFI_ICON); Bekomme ich das Installer Icon.
Komisch. Damit liest der Windows Explorer das Icon aber selbst aus (und zeigt es ja vermutlich richtig an).
Egal bei welcher .lnk Datei ich das teste, es klappt, wenn ich die direkt dort angebe.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Ordnung muss sein (LaunchBar)

  Alt 16. Aug 2018, 08:33
Vielen Dank und Guten Morgen Emil,

ich wollte Dich nur rasch Wissen lassen das die "Cleanup" Fenster nun allesamt bei mir ihr Werk ohne Probleme verrichten!

edit
Falls ich dennoch einmal meinen Wunsch wiederholen darf, mit OnTop, da wünsche ich mir ne mini-Checkbox mittig/unten im OTTB für Quick On/Off OnTop, ohne Menu/Config/Umwege, direkt als Quicky sofort Erreichbar.
Wäre da nicht ein globaler Shortcut sinnvoller, der die Leiste schlicht nach oben holt?
Für mich, der oft Tastatur weg lässt, ist die Lösung von Emil perfekt umgesetzt.
Ein TaskBar Icon könnte ich mir noch als Alternative vorstellen.
Gruß vom KodeZwerg

Geändert von KodeZwerg (16. Aug 2018 um 08:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.813 Beiträge
 
Delphi 12 Athens
 
#7

AW: Ordnung muss sein (LaunchBar)

  Alt 16. Aug 2018, 10:49
Windows 10 Pro (Version 1803 [Build 17134.228]

Hab OTTB.zip in meinem Download Ordner entpackt und von dort aus ausgeführt. Funktioniert ohne Fehlermeldung und sieht gefällig aus.
Ich brauche es allerdings nicht und habs wieder geschlossen und gelöscht.

Schöne Arbeit aber!

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz