Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   CreateShortCut (https://www.delphipraxis.net/192585-createshortcut.html)

EWeiss 2. Mai 2017 20:38

CreateShortCut
 
Habe mir diese Class geladen
http://www.tek-tips.com/faqs.cfm?fid=7526
Kleinere Problem konnte ich beheben den aber nicht weil da zu viel von abhängt.

Zitat:

[DCC Fehler] uIShellItem.pas(89): E2188 Published-Eigenschaft 'ItemIDList' kann nicht vom Typ POINTER sein
Delphi-Quellcode:
      // PItemIDList value for file referenced in AppPath
      property ItemIDList: PItemIDList read FPIdl write FPIdl;
was muss ich ändern damit es geht aus Published herausnehmen?

Jo geht nur was hat das für Auswirkungen Published oder nicht.

gruss

nahpets 2. Mai 2017 21:13

AW: CreateShortCut
 
Soweit ich weiß, wird Published im Objektinspektor angezeigt, Public nicht.

Habe nicht den Eindruck, dass man diese Eigenschaft unbedingt im Objektinspektor benötigt.

Wenn Du das Teil erst zur Laufzeit erstellst, sollte das (meiner Meinung nach) unkritisch sein.

EWeiss 2. Mai 2017 21:15

AW: CreateShortCut
 
Zitat:

Zitat von nahpets (Beitrag 1369922)
Soweit ich weiß, wird Published im Objektinspektor angezeigt, Public nicht.

Habe nicht den Eindruck, dass man diese Eigenschaft unbedingt im Objektinspektor benötigt.

Wenn Du das Teil erst zur Laufzeit erstellst, sollte das (meiner Meinung nach) unkritisch sein.

Ok danke.. Habe aber festgestellt das ich diese Unit nicht nutzen kann weil sie keinen ShortCut erstellt.
Ich möchte einen ShortCut erstellen ohne diesen Abspeichern zu müssen.

Na ok muss den Kram umbauen.

gruss

Michael II 2. Mai 2017 21:39

AW: CreateShortCut
 
Zitat:

Ich möchte einen ShortCut erstellen ohne diesen Abspeichern zu müssen.

Hallo EWeiss

Meinst du mit Shortcut eine .lnk Datei? Wenn Ja: Wo soll der Shortcut erstellt werden?

Was meinst du mit "ohne diesen abspeichern zu müssen"?

Wenn du einen Shortcut erstellst, dann wird doch immer eine Datei mit der "Link-Info" gespeichert? Oder gibt es da andere Möglichkeiten, von denen ich nix weiss?

nahpets 2. Mai 2017 21:40

AW: CreateShortCut
 
Suchst Du sowas?

http://stackoverflow.com/questions/7...top-in-windows

EWeiss 2. Mai 2017 21:54

AW: CreateShortCut
 
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

himitsu 2. Mai 2017 23:12

AW: CreateShortCut
 
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.

EWeiss 2. Mai 2017 23:28

AW: CreateShortCut
 
Zitat:

Zitat von himitsu (Beitrag 1369934)
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

Delphi-Quellcode:
property ItemIDList: PItemIDList read FPIdl write FPIdl;


das haben

Delphi-Quellcode:
property ItemIDList: TItemIDList read FPIdl write FPIdl;


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

gruss

himitsu 3. Mai 2017 08:29

AW: CreateShortCut
 
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.

EWeiss 3. Mai 2017 08:36

AW: CreateShortCut
 
Zitat:

Zitat von himitsu (Beitrag 1369952)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz