AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi *.Lnk Verknüpfungen funktionieren nicht.
Thema durchsuchen
Ansicht
Themen-Optionen

*.Lnk Verknüpfungen funktionieren nicht.

Ein Thema von EWeiss · begonnen am 13. Mai 2017 · letzter Beitrag vom 17. Mai 2017
Antwort Antwort
Seite 1 von 3  1 23      
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 10:44
Zitat:
Ich verstehe allerdings auch nicht warum du die .lnk ausliest und ausführst anstatt einfach die Verknüpfung auszuführen. Dafür ist sie ja da. Das funktioniert hier auch problemlos:
Ich verstehe nicht das ihr nicht versteht das es durchaus sinn machen kann wenn man dinge tut die andere nicht verstehen wollen oder können.
Aber das ist ganz einfach erklärt.

Ich habe eine Anwendung geschrieben die sich da nennt OverTheTaskbar. (OTTB.exe)
Das ist eine im Mac style ausgelegte Bar in der sich alle Anwendungen die man so benötigt integriert werden.

Es soll Leute geben die 30 > 100 Icons auf dem Desktop liegen haben.
Wenn meine Anwendung gestartet wird scannt diese alle Verknüpfungen auf dem Desktop und addiert diese zu OTTB.

Der Desktop wird dann stillgelegt und die Anwendungen können dann aus der Bar heraus gestartet werden.

Ich habe dann einen aufgeräumten Desktop und komme trotzdem noch an alle meine Daten.
Und nein falls diese Frage auftaucht.. es wird nichts gelöscht und die Icons vom Desktop können bei bedarf über ein Menü
wieder eigeschaltet werden.

Jetzt hänge ich doch nochmal ein Bild an.
Zitat:
In diesem Fall liefert ShellExecute aber 2 zurück, was laut Doku heißt (oh Wunder) ERROR_FILE_NOT_FOUND. Hättest du gleich dies geschrieben, wären wir schon längst weiter gewesen...
Nun dafür muss ich aber die Fehlerbehandlung nicht selbst gegenprüfen (Shellexecute bedingt) Windows macht das für mich.
Das wäre doppelt gemoppelt

gruss

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

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

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 10:59
Ich verstehe nicht das ihr nicht versteht das es durchaus sinn machen kann wenn man dinge tut die andere nicht verstehen wollen oder können.
Aber das ist ganz einfach erklärt.
[...]
Und nein falls diese Frage auftaucht.. es wird nichts gelöscht und die Icons vom Desktop können bei bedarf über ein Menü
wieder eigeschaltet werden.
Dann führe die Verknüpfungen doch einfach aus. Ansonsten bliebe nur die Funktionalität der explorer.exe nachzubilden, die eben nicht nur den Pfad aus der .lnk ausliest, sondern auch die genannten DLLs benutzt um den echten Pfad zu ermitteln.

Zitat:
In diesem Fall liefert ShellExecute aber 2 zurück, was laut Doku heißt (oh Wunder) ERROR_FILE_NOT_FOUND. Hättest du gleich dies geschrieben, wären wir schon längst weiter gewesen...
Nun dafür muss ich aber die Fehlerbehandlung nicht selbst gegenprüfen (Shellexecute bedingt) Windows macht das für mich.
Das wäre doppelt gemoppelt
Ich habe alles eben noch einmal durchgeschaut. Davon, dass der Fehler ist, dass die Datei nicht gefunden wurde, lese ich nirgends etwas. Wenn das auch so schon klar war ohne den Rückgabewert, dann wäre es schön gewesen das auch dazuzuschreiben...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 11:00
Zitat:
Sprich die angegebene Exe aus der Verknüpfung existiert gar nicht.
Klar existiert die wer sagt dir das es nicht so ist?
OB sie nun ausführbar ist, das ist eine andere Geschichte.

Zitat:
Dann führe die Verknüpfungen doch einfach aus.
Theoretisch wäre es ja auch kein Problem es auf deine weise zu tun.
Aber praktisch ist es so das ich nicht auswählen kann was der User auf den Desktop legt.. Oder?

Und aussortieren kann ich da auch nichts.
Wiederum aus der Bar Anwendungen aus dem Startmenu zu starten macht keinen sinn.
Diese soll ja kein Ersatz für das Startmenu sein.

gruss

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

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#4

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 13:11
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.

Daher auch die Meldung "Ist keine gültige Win32-Anwendung". Ich habe mit dieser Geschichte auch schon zu tun gehabt, als ich ein Plugin für Total Commander schrieb und im Zuge dessen mit Verknüpfungen (LNKs) "rumgespielt" habe.

Lösung: LNK ausführen, ist viel einfacher. Es steckt in LNKs noch jede Menge Krempel, den man sonst von Hand nachbilden müsste.

Grüße
Dalai
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 13:17
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

Geändert von EWeiss (13. Mai 2017 um 13:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#6

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 16:29
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 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
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 16:48
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
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 17:31
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

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

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#9

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 17:46
Woher willst du das so genau wissen wann ich das Icon einlese?
Ich bezog mich auf das Einlesen durchs System, um das Icon für die Verknüpfung darstellen zu können. Aber ja, es könnte sein, dass das durch deinen Code ausgelesene Icon ebenfalls aus dem Iconcache stammt; ich hab kein tiefergehendes Wissen, wie Windows diesbzgl. arbeitet.

Zitat:
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.
Nun, allein aus dem OP und den ersten paar Posts kann man diese Details nicht ablesen. Insofern kann daraus keiner den Aufwand abschätzen.

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 13:21
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 14: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