AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CreateShortCut

Ein Thema von EWeiss · begonnen am 2. Mai 2017 · letzter Beitrag vom 3. Mai 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: CreateShortCut

  Alt 2. Mai 2017, 21:54
Zitat:
Was meinst du mit "ohne diesen abspeichern zu müssen"?
Ich meine die Informationen aus der Verknüpfung auslesen.

Bei WShell (Scrip) will ich nicht verwenden muss man die Verknüpfung erst erstellen um daraus die Informationen zu extrahieren.
Bei IShellLink geht das ohne.

Habe deshalb die Funktion hier anpasst.
Ich übergebe die Verknüpfung und den Rest macht die Funktion.

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);
  FIconPath := String(FP);
  // based on icon information tries to load the icon itself into Icon type.
  if FIconPath = 'then // regular explorer association.
    begin
      SHGetFileInfo(PChar(FAppPath), 0, psfi, sizeof(psfi), SHGFI_ICON);
      FIcon.Handle := psfi.hIcon;
    end
  else // specified in file, go get it.
    FIcon.Handle := ExtractIcon(hInstance, PChar(FIconPath), FIconIndex);
end;
Ich brauche die Daten nachher um die Verknüpfung auf der Bar ausführen zu können.

Zitat:
Suchst Du sowas?
Nein Danke hab das richtige schon gefunden muss die nur meinen Vorstellungen entsprechend anpassen.
Ich möchte ja keinen erstellen sondern die Informationen daraus auslesen.
Warum alles neu erfinden

gruss

Geändert von EWeiss ( 2. Mai 2017 um 23:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.386 Beiträge
 
Delphi 12 Athens
 
#2

AW: CreateShortCut

  Alt 2. Mai 2017, 23:12
Die Published Property können/sollen/müssen "automatisch" ausgelesen und vorallem gesetzt werden können.
Es sind dort also nur statische Typen und gemanagete Typen möglich/erlaubt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: CreateShortCut

  Alt 2. Mai 2017, 23:28
Die Published Property können/sollen/müssen "automatisch" ausgelesen und vorallem gesetzt werden können.
Es sind dort also nur statische Typen und gemanagete Typen möglich/erlaubt.
Ja nu
Aber irgendwann muss das teil mal inklusive Published gelaufen haben.

Nur mit D2010 macht der Compiler ärger..
Er will hier

property ItemIDList: PItemIDList read FPIdl write FPIdl;

das haben

property ItemIDList: TItemIDList read FPIdl write FPIdl;

Nur dann hätte ich alles ändern müssen.
Deshalb ist es jetzt Public.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.386 Beiträge
 
Delphi 12 Athens
 
#4

AW: CreateShortCut

  Alt 3. Mai 2017, 08:29
Das mag keine Delphi-Version im Published.

Pointer sind dynamisch und nicht gemanaged, also der Speicher wird nicht "automatisch" freigegeben/verwaltet.



TItemIDList geht natürlich nur, wenn PItemIDList nicht zufällig eine "Liste" aus mehreren ItemIDs (TItemIDList) ist, hab da aber grade keine Ahnung.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: CreateShortCut

  Alt 3. Mai 2017, 08:36
Das mag keine Delphi-Version im Published.

Pointer sind dynamisch und nicht gemanaged, also der Speicher wird nicht "automatisch" freigegeben/verwaltet.



TItemIDList geht natürlich nur, wenn PItemIDList nicht zufällig eine "Liste" aus mehreren ItemIDs (TItemIDList) ist, hab da aber grade keine Ahnung.
Ok
Ist ja erst mal erledigt.
Aber wenn man die Classe oben im ersten Beitrag der Link mal anschaut ist es Published gesetzt.
Hat das dann nie funktioniert?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.386 Beiträge
 
Delphi 12 Athens
 
#6

AW: CreateShortCut

  Alt 3. Mai 2017, 09:34
Jupp.
Dieses Property wurde nie in die RTTI-aufgenommen, der Compiler warf immer eine Warnung und alle haben fahrlässig diese Warning ignoriert.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:22 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