Delphi-PRAXiS
Seite 3 von 8     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi *.Lnk Verknüpfungen funktionieren nicht. (https://www.delphipraxis.net/192716-%2A-lnk-verknuepfungen-funktionieren-nicht.html)

EWeiss 13. Mai 2017 13:17

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
Zitat:

Lösung: LNK ausführen, ist viel einfacher. Es steckt in LNKs noch jede Menge Krempel, den man sonst von Hand nachbilden müsste.
Die frage ist nur wie soll ich den Pfad parsen wenn ich die Shortcuts vom Desktop einlese.
Denke mal das sollte nicht so einfach sein.

Denn wie gesagt ich möchte keine Dateien vom Startmenu addieren.
Und wenn jemand Word auf den Desktop abgelegt hat was dann ?

Zitat:

lediglich Ressourcen, hier Icons.
Ja deshalb bekomme ich bei einigen auch das Package Icon geliefert anstelle das von der EXE.

gruss

jaenicke 13. Mai 2017 13:21

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
Zitat:

Zitat von Dalai (Beitrag 1371251)
Also, die EXEn in C:\Windows\Installer existieren natürlich, allerdings sind das KEINE normalen EXEn der jeweiligen Anwendungen sondern sie enthalten - wie der Dateiname auch schon vermuten lässt - lediglich Ressourcen, hier Icons.

Bei mir nicht. Weder Windows noch Linux finden dort den Ordner. Und laut Process Monitor gibt es zumindest beim Starten der Verknüpfung für Word 2010 auch keinen Zugriff darauf.

EWeiss 13. Mai 2017 13:24

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
Zitat:

Zitat von jaenicke (Beitrag 1371254)
Zitat:

Zitat von Dalai (Beitrag 1371251)
Also, die EXEn in C:\Windows\Installer existieren natürlich, allerdings sind das KEINE normalen EXEn der jeweiligen Anwendungen sondern sie enthalten - wie der Dateiname auch schon vermuten lässt - lediglich Ressourcen, hier Icons.

Bei mir nicht. Weder Windows noch Linux finden dort den Ordner. Und laut Process Monitor gibt es zumindest beim Starten der Verknüpfung für Word 2010 auch keinen Zugriff darauf.

Du musst die Order Eigenschaften so einstellen das du geschützte Dateien und Ordner einblendest.
Danach kannst du auch den Installer Ordner unter Windows finden.

gruss

nahpets 13. Mai 2017 15:44

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
Eventuell liege ich ja vollkommen daneben, aber ich würde mir vom Desktop einfach alle Links sammeln (oder was ich sonst so auswählen möchte) und die dann in der Form starten:

Delphi-Quellcode:
ShellExecuteAndWaitW(MainHandle, 'open', PWideChar(sPfadUndNameDerLinkdatei), '', '', gS[nItem].ShowCmd, true);


Windows kann dann mit seiner "eingebauten Logik" für den entsprechenden Programmstart (unter Auswertung aller in der Linkdatei enthaltenen Konfigurationen) sorgen.

jaenicke 13. Mai 2017 15:54

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
Zitat:

Zitat von EWeiss (Beitrag 1371255)
Du musst die Order Eigenschaften so einstellen das du geschützte Dateien und Ordner einblendest.
Danach kannst du auch den Installer Ordner unter Windows finden.

Den Ordner gibt es auch und darunter auch viele andere, aber eben nicht den genannten. Und bei mir kommt ja auch, dass die Datei nicht gefunden wird.

Für die Ausführung ist die Datei also definitiv nicht nötig. Das Icon könnte im Cache liegen.

EWeiss 13. Mai 2017 15:56

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
Zitat:

Zitat von nahpets (Beitrag 1371262)
Eventuell liege ich ja vollkommen daneben, aber ich würde mir vom Desktop einfach alle Links sammeln (oder was ich sonst so auswählen möchte) und die dann in der Form starten:

Delphi-Quellcode:
ShellExecuteAndWaitW(MainHandle, 'open', PWideChar(sPfadUndNameDerLinkdatei), '', '', gS[nItem].ShowCmd, true);


Windows kann dann mit seiner "eingebauten Logik" für den entsprechenden Programmstart (unter Auswertung aller in der Linkdatei enthaltenen Konfigurationen) sorgen.

Geht nicht so einfach.
Denn es gibt unter umständen mehrere Benutzer am Computer da kann man nicht sicher sein ob man einen zugriff auf den Desktop Order des jeweiligen Users bekommt.

Auf der anderen Seite gibt es ja auch so etwas.
Zitat:

"explorer.exe, Papierkorb, @PATH@UserIcon\48x48\RecycleBinFull.png, , /N;::{645FF040-5081-101B-9F08-00AA002F954E}, 2"
Das ist so pauschal gesagt nicht so einfach das alles unter einen Hut zubringen.
Dann verzichte ich lieber auf Office. ;)

Aber wenn dann wäre dieser weg den Desktop Ordner zu durchsuchen der richtige.

gruss

EWeiss 13. Mai 2017 15:57

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
Zitat:

aber eben nicht den genannten.
Nein kann auch nicht.
Es sei denn du hast Office 2016 installiert.
So wie ich das aber sehe sind fast alle 64Bit installierten Anwendungen dort vertreten.
Darauf habe ich dann auch keinen zugriff.

gruss

Dalai 13. Mai 2017 16:29

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
Zitat:

Zitat von EWeiss (Beitrag 1371253)
Denn wie gesagt ich möchte keine Dateien vom Startmenu addieren.

Was hat das Startmenü damit zu tun? Du gibst ShellExecute einfach direkt die LNK, ist doch kein Problem. Oder übersehe ich was?

Zitat:

Und wenn jemand Word auf den Desktop abgelegt hat was dann ?
Was soll dann anders sein?

Zitat:

Zitat von jaenicke
Bei mir nicht. Weder Windows noch Linux finden dort den Ordner. Und laut Process Monitor gibt es zumindest beim Starten der Verknüpfung für Word 2010 auch keinen Zugriff darauf.

Ein Zugriff beim Starten der Software ist auch nicht nötig, denn das Icon wird daraus schon wesentlich früher gelesen, sofern es nicht eh bereits aus dem Iconcache ausgelesen wurde. Der Name des Ordners hängt natürlich von der Software und deren Version ab. Adobe Reader ist auch ein Kandidat, der seinen Krempel dort hinterlegt. Und es gibt noch weitere Programme, deren Setup auf Windows Installer oder InstallShield (Wrapper um MSI) basiert.

Grüße
Dalai

EWeiss 13. Mai 2017 16:48

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
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

Delphi-Quellcode:
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

EWeiss 13. Mai 2017 17:31

AW: *.Lnk Verknüpfungen funktionieren nicht.
 
OK jetzt geht's hab euch noch ein paar Herzen hinzugemacht. LOL
Die Herzen sind Verknüpfungen der Rest ist vordefiniert in meiner Config Datei.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:01 Uhr.
Seite 3 von 8     123 45     Letzte »    

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