![]() |
*.Lnk Verknüpfungen funktionieren nicht.
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:
Sogar mit Ziel und Ausführen in funktioniert es nicht.
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; gruss |
AW: *.Lnk Verknüpfungen funktionieren nicht.
Zitat:
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. ![]() ![]() 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. :roll: |
AW: *.Lnk Verknüpfungen funktionieren nicht.
Zitat:
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 |
AW: *.Lnk Verknüpfungen funktionieren nicht.
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. |
AW: *.Lnk Verknüpfungen funktionieren nicht.
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. |
AW: *.Lnk Verknüpfungen funktionieren nicht.
Zitat:
Zitat:
So einfach ist das. Die habe ich nicht angehängt weil sie schön sind sondern zu Dokumentations zwecken. Zitat:
Zitat:
gruss |
AW: *.Lnk Verknüpfungen funktionieren nicht.
Zitat:
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 ![]() |
AW: *.Lnk Verknüpfungen funktionieren nicht.
Was steht denn in Deinen Strings, die Du an ShellExecute übergibst?
|
AW: *.Lnk Verknüpfungen funktionieren nicht.
Zitat:
Delphi-Quellcode:
Parameter:
ShellExecuteAndWaitW(MainHandle, 'open', PWideChar(sShellTo), PWideChar(sCmdLine),
PWideChar(sFullPath), gS[nItem].ShowCmd, true); '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 |
AW: *.Lnk Verknüpfungen funktionieren nicht.
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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 by Thomas Breitkreuz