Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi kann keine *.lnk öffnen (https://www.delphipraxis.net/67009-kann-keine-%2A-lnk-oeffnen.html)

BlackBird1977 7. Apr 2006 21:28


kann keine *.lnk öffnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo auf einigen Systemen - was genau die Ursache weis ich nicht deswegen schreibe ich hier - hab ich mit meinem Programm ein Problem *.lnk Dateien zu öffnen bei mir zB.: XP Pro mit SP2 und XP PRO SP1 geht es OHNE Probleme.
Bei einem Nutzer - der XP Pro SP1 nutzt geht es nicht statt das die Verknüpfung ordentlich geöffnet wird, erscheint das - was Ihr auf dem Bild sehen könnt...


Bin ratlos.

zum öffnen der *.lnk benutzte ich

Delphi-Quellcode:
procedure ExecuteProgramm(const PFileName: string);
var
  SEInfo: TShellExecuteInfo;
  ExitCode: DWORD;
  ExecuteFile: string;
begin
  ExecuteFile := '"' + PFileName + '"';
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  SEInfo.cbSize := SizeOf(TShellExecuteInfo);

  with SEInfo do
  begin
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := Application.Handle;
    lpFile := PChar(ExecuteFile);
    nShow := SW_SHOWNORMAL;
  end;

  if ShellExecuteEx(@SEInfo) then
  begin
    repeat
      Application.ProcessMessages;
      GetExitCodeProcess(SEInfo.hProcess, ExitCode);
    until (ExitCode <> STILL_ACTIVE) or
      Application.Terminated;
  end else
  begin
    Application.MessageBox('Error - konnte Datei nicht öffnen', 'Hinweis', MB_SYSTEMMODAL);
  end;
end;
Hab es aber auch schon mit ShellExecute und WinExec versucht ;(

eisblock 7. Apr 2006 21:32

Re: kann keine *.lnk öffnen
 
kannst die Dateien (wenn du dich etwas damit auskennst) auch manuell ins Programm laden, den Link darin finden und die Zieldatei dann über ShellExecute öffnen...
aber es geht sicher auch einfacher

BlackBird1977 7. Apr 2006 21:40

Re: kann keine *.lnk öffnen
 
die LNK ist in OK - wenn das die Frage ist!
auch das doppelklicken auf die Datei geht ohne Probleme nur aus dem Programm heruas macht es ärger - waran das liegt und welche System das betrifft - ich weis es nicht ;(

mkinzler 7. Apr 2006 21:42

Re: kann keine *.lnk öffnen
 
Versuch mal die Verknüpfung aufzulösen und den echten Pfad aufzurufen.

BlackBird1977 7. Apr 2006 21:43

Re: kann keine *.lnk öffnen
 
hmm ja wäre eine Idee- bez. eine Lösung - werde ich auf jedenfall ausprobieren.

Aber es ist nicht Sinn der Sache ;)

scp 7. Apr 2006 21:53

Re: kann keine *.lnk öffnen
 
Eventuell reicht es auch, wenn du die '"' weglässt, die dürften nicht erforderlich sein.

BlackBird1977 7. Apr 2006 21:56

Re: kann keine *.lnk öffnen
 
Ok werde das auch auspobieren!
geht aber erst alles wenn der entsprechende user wieder onlien ist ... das heisst morgen denke ich kann ich Euch das entsprechende Feedback geben!

ringli 7. Apr 2006 22:00

Re: kann keine *.lnk öffnen
 
Ich vermute mal das es an einem beliebten Registrytweak liegt. Und zwar dem Ausblenden der Verknüpfungspfeile. Such dir mal im Registrierungseditor die folgenden Abschnitte raus:
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\lnkfile
bzw.
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\piffile
Wenn in einem dieser beiden Abschnitte die Zeichenfolge IsShortCut fehlt, führt das normalerweise zu dem von dir beschriebenen Verhalten.

BlackBird1977 7. Apr 2006 22:03

Re: kann keine *.lnk öffnen
 
dank werde es bei sofort ausprobieren und melde mich dann wieder

Edit1: Jo bei mir erscheint dann auch das "besagte" Fenster siehe erstes Posting. Das könnte die Lösung sein!
Nun frag ich mich ist es legitim, das ich diese Werte einfach anlege oder sollte ich die entsprechenden User darauf hinweisen, das eine Änderung erfolgt.

Was genau soll eigentlich dieser "Tweak" bringe? <- Hat sich erledigt - Du schriebst es ja - die Pfeile deaktivieren....
Ok - kann ich das umgehen - ohne die Werte? oder bleibt mir nur das erstellen dieser Werte?

ringli 7. Apr 2006 22:09

Re: kann keine *.lnk öffnen
 
Zitat:

Was genau soll eigentlich dieser "Tweak" bringe?
Dadurch werden die Overlay-Verknüpfungspfeile ausgeblendet. Normalerweise sollte man es aber so machen das man als Overlay-Icon einfach ein transparentes Icon verwendet damit dieses Problem eben nicht auftritt.

ringli 7. Apr 2006 22:13

Re: kann keine *.lnk öffnen
 
Unter
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons
legst du eine neue Zeichenfolge 29 an. Als Wert muss ein Pfad zu einem Icon (z.B. C:\Icons\Transparent.ico) angegeben werden, welches transparent ist.

Dann könntest du die anderen beiden Werte einfach wieder hinzufügen ohne das der User etwas von dieser Änderung mitkriegt.

BlackBird1977 7. Apr 2006 22:14

Re: kann keine *.lnk öffnen
 
Zitat:

Zitat von ringli
Unter
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons
legst du eine neue Zeichenfolge 29 an. Als Wert muss ein Pfad zu einem Icon (z.B. C:\Icons\Transparent.ico) angegeben werden, welches transparent ist.

Dann könntest du die anderen beiden Werte einfach wieder hinzufügen ohne das der User etwas von dieser Änderung mitkriegt.

ok danke - nun fragt sich nur eins ist diese eigenmächtige Änderung legitim?

ringli 7. Apr 2006 22:17

Re: kann keine *.lnk öffnen
 
Zitat:

ok danke - nun fragt sich nur eins ist diese eigenmächtige Änderung legitim?
Das ist eine gute Frage. Im Grunde kannst du den User nur während des Updatevorganges fragen ob er die Änderung zulassen möchte. Wenn nicht, sollte ein Hinweis erfolgen das die Verknüpfungen nicht ausgeführt werden können. Für den User ändert sich rein optisch ja nichts. Von daher dürfte den meisten Usern diese Änderung nichts ausmachen.

BlackBird1977 7. Apr 2006 22:23

Re: kann keine *.lnk öffnen
 
ok danke erstmal und vorallem für diese super schnelle Hilfe hier!

Werde mich wie gesagt morgen melden und Euch sagen wie es ausschaut ;)

Christian Seehase 8. Apr 2006 12:03

Re: kann keine *.lnk öffnen
 
Moin Blackbird,

Zitat:

Zitat von BlackBird1977
nun fragt sich nur eins ist diese eigenmächtige Änderung legitim?

also für meinen Geschmack nicht ;-)

Ausserdem stehst Du vor dem Problem, dass sich der Wert den Du setzt (die 29) je nach Windows-Version unterschiedlich sein kann.

Der saubere Weg wäre es den Pfad aus der LNK-Datei auszulesen (wie es ja schon weiter oben beschrieben wurde).


Alle Zeitangaben in WEZ +1. Es ist jetzt 05: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