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 8  1 23     Letzte »    
EWeiss
(Gast)

n/a Beiträge
 
#1

*.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 02:53
Um zu verstehen was ich meine ist es nötig die Bilder anzusehen.
Diese Verknüpfung über ShellExecute funktioniert nicht.

jemand einen Ahnung warum das so ist?

Delphi-Quellcode:
procedure StartApplication(nItem: integer);
var
  sShellTo, sCmdLine, sFullPath: string;
begin
  sShellTo := gS[nItem].ShellTo;
  if InStr(0, sShellTo, '{') <> 0 then
    sShellTo := '';

  sFullPath := gS[nItem].WorkDir;
  sCmdLine := gS[nItem].CmdLine;
  sCmdLine := StringReplace(sCmdLine, ';', ',', [rfReplaceAll]);

  if Length(sFullPath) = 0 then
    sFullPath := RightTrim(ExtractFilePath(sShellTo))
  else
    SetCurrentDirectory(PWideChar(sFullPath));

  ShellExecute(0, 'open', PWideChar(sShellTo), PWideChar(sCmdLine), PWideChar(sFullPath),
    gS[nItem].ShowCmd);

end;
Sogar mit Ziel und Ausführen in funktioniert es nicht.

gruss

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

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

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 05:20
Um zu verstehen was ich meine ist es nötig die Bilder anzusehen.
Nein?

Was geht nicht?
Vorallem was steht in welche Variable drin?

Und ich kann rein garnichts erkennen, was mit einer LNK-Datei zu tun haben soll.
Wie/Wo wird da auf so eine Datei zugegriffen und wie werden die Werte dort ausglesen.
Bzw. wie sieht diese Datei aus?

Manchmal kann es auch nicht schaden, wenn man "Sonderfunktionen" erklärt, die nicht standardmäßig im Delphi enthalten sind.
Delphi-Referenz durchsuchenPoSex / Delphi-Referenz durchsuchenContainsStr
Oder den Code kommentiert, denn ich kann z.B. keinen Sinn darin erkennen, warum da TrimRight oder das SetCurrentDirectory im Code drin ist.

Und warum im Himmels Willen wertet Niemand die Rückgabewerte von ShellExecute aus?
Man mag es nicht glauben, aber die WinAPI sagt einem manchmal sogar, warum etwas nicht funktioniert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Mai 2017 um 05:26 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 05:33
Zitat:
Nein?
Soll ich dir darauf antworten wenn du nein sagst ?

Warum Antwortest du wenn du die Bilder nicht ansehen möchtest
ohne das du das tust und den Link der EXE Datei anschaust wirst du mir auch nicht helfen können.

gruss

Geändert von EWeiss (13. Mai 2017 um 05:35 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 05:36
Deine Antwort könnte in weiteren Informationen bestehen.
Und Dein Problem ist auch nicht, dass Verknüpfungen im Allgemeinen nicht funktionieren, sondern dass das Auslesen der Pfade offenbar ein Problem bereitet.

Himitsu hat Dir einen wichtigen Tipp gegeben: Den Rückgabewert von ShellExecute() auszuwerten. Ansonsten versuche es mal mit einem kurzen Pfad ohne Leerzeichen. Eventuell fehlen nur die doppelten Anführungszeichen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 05:38
Er hat doch völlig Recht. Die Bildchen helfen niemand. Der Code ebenso, denn niemand kann riechen was in den Variablen steckt.

Edit: Hoppla, der rote Kasten schläft noch.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 05:41
Zitat:
Himitsu hat Dir einen wichtigen Tipp gegeben: Den Rückgabewert von ShellExecute() auszuwerten. Ansonsten versuche es mal mit einem kurzen Pfad ohne Leerzeichen. Eventuell fehlen nur die doppelten Anführungszeichen.
Die Rückgaben sagen gar nichts aus wenn keine kommen. (Diese sind NUR wichtig wenn Fehler auftreten sollten ) tun sie aber nicht.

Zitat:
Er hat doch völlig Recht. Die Bildchen helfen niemand.
Aber ohne diese wirst du den ellenlangen Pfad den ich hier nicht eintippen will nicht sehen können.
So einfach ist das.
Die habe ich nicht angehängt weil sie schön sind sondern zu Dokumentations zwecken.

Zitat:
sondern dass das Auslesen der Pfade offenbar ein Problem bereitet.
Nö sondern dass das starten des Programms über den Pfad wie er im Bild ersichtlich ist nicht funktioniert.

Zitat:
Und ich kann rein garnichts erkennen, was mit einer LNK-Datei zu tun haben soll.
Du weist nicht was eine Verknüpfung ist? NA dann.

gruss

Geändert von EWeiss (13. Mai 2017 um 05:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.346 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 05:51
Die Rückgaben sagen gar nichts aus wenn keine kommen. (Diese sind NUR wichtig wenn Fehler auftreten sollten ) tun sie aber nicht.
ShellExecute hat immer einen Rückgabewert. Und dein Problem ist doch, dass es nicht funktioniert, also wieso sollte der Rückgabewert nichts aussagen?

Rückgabewerte nicht zu behandeln heißt:
"Mach mal, aber wenn es nicht geht, ist es mir auch egal."
Wenn es dir nicht egal ist, ob es nicht funktioniert, solltest du die Rückgabewerte auch behandeln um ggf. eine passende Fehlermeldung auszugeben.

Wenn der Rückgabewert von ShellExecute wirklich sagt alles ok, bleibt nur noch mit Tools wie dem Process Monitor zu schauen warum das erfolgreich gestartete Programm (Rückgabewert alles ok, also wurde es gestartet) abstürzt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 06:00
Was steht denn in Deinen Strings, die Du an ShellExecute übergibst?
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 06:53
Was steht denn in Deinen Strings, die Du an ShellExecute übergibst?
Dafür muss man sich mein Dokument in Bildform ansehen da steht der Name der Exe.

Delphi-Quellcode:
ShellExecuteAndWaitW(MainHandle, 'open', PWideChar(sShellTo), PWideChar(sCmdLine),
  PWideChar(sFullPath), gS[nItem].ShowCmd, true);
Parameter:
'ShellTo, UseLabel, IconName, WorkDir, CmdLine, EnableShortcutTrueFalse'
Zu Parsender String
"explorer.exe, Win7(C, @PATH@UserIcon\48x48\HD.png, @PATH@, C:\, 1"


sShellTo = explorer.exe
sUseLabel = Win7(C
sUseThumb = @PATH@UserIcon\48x48\HD.png
sFullPath(Workdir) = ''
sCmdLine = C:\
gS[nItem].ShowCmd := SW_SHOW

Als Beispiel.

gruss
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: *.Lnk Verknüpfungen funktionieren nicht.

  Alt 13. Mai 2017, 07:03
Emil - wir reden aneinander vorbei. Dein Screenshot zeigt den Windows-eigenen Dialog zu den Eigenschaften des Links. Schön und gut.
Relevant ist aber doch, was in Deinen Strings steht. Und das geht aus Deinen Screenshots nicht hervor. Auch wenn Du noch so sehr insistierst.
Im ersten Beitrag nutzt Du "ShellExecute", jetzt im letzten Beitrag "ShellExecuteAndWait", was eine eigene Routine ist - auch hier könnten Fehler verborgen sein.
Die Notation mit "@Path@" ist mir nicht bekannt und erscheint mir suspekt.

Rückgabewert von ShellExecute prüfen oder mit Werkzeugen wie dem ProzessExplorer von Microsoft mal schauen, wo Dein Programm hin will. Mehr fällt mir auch nicht ein.
ich bin jetzt aber auch raus.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    


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 23:24 Uhr.
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