Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Mein Programm funktioniert nicht über eine Verknupfung richtig ! (https://www.delphipraxis.net/155776-mein-programm-funktioniert-nicht-ueber-eine-verknupfung-richtig.html)

thomas2009 7. Nov 2010 21:22


Mein Programm funktioniert nicht über eine Verknupfung richtig !
 
Hallo

ich verstehe nicht warum funktioniert mein Programm richtig,
nur wenn ich das Programm direkt im Programmverzeichnis starte !

Aber wenn ich mein Programm durch eine Verknüpfung (durch das Icon auf Desktop) aufrufe, dann können alle Dateien wie Videos, die ich in mein Programm lade nicht gefunden werden) !!!

Was ist der Unterschied, wenn ich das Programm direkt aufrufe oder durch eine Verknüpfung ?

Ich lade meine Videos in Mediaplayer Komponent :
MediaPlayer.FileName :=Temp +'\video1.avi';

wicht 7. Nov 2010 21:24

AW: Mein Programm funktioniert über eine Verknupfung
 
Eventuell wegen dem "working directory"?

thomas2009 7. Nov 2010 21:31

AW: Mein Programm funktioniert über eine Verknupfung
 
Was meinst du bitte mit "working directory" ?
Als Hinweis
So wird der Pfad gebaut :

Temp :=GetEnvironmentVariable('Temp');
MediaPlayer.FileName :=Temp +'\video1.avi';

wicht 7. Nov 2010 21:38

AW: Mein Programm funktioniert über eine Verknupfung
 
Benutz einfach beim Dateizugriff als Pfad nicht 'ordner\datei.ext', sondern sowas wie
Delphi-Quellcode:
IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)) + 'ordner\datei.exe'
.

thomas2009 7. Nov 2010 21:57

AW: Mein Programm funktioniert über eine Verknupfung
 
Was Bummi am Anfang geschrieben hat, konnte das Problem sein

Wenn ich eine die Verknüpfung selbe erstellen, dann geht
Aber die Verknüpfung, die von dem Setup-Programm (Inno) erstellt werden, funktionieren nicht

Und noch was. Die Verknüpfung-Eigenschaften von Inno steht nur der Ziel-Pfad
Aber Ausführen : Leer

Kann das das Problem sein ?

Bummi 7. Nov 2010 22:04

AW: Mein Programm funktioniert über eine Verknupfung
 
ja, wir hatte vor kurzem ein ähnlich fehlerhaftes Setup erstellt, es aber glücklicherweise in der Testphase noch bemerkt.

thomas2009 7. Nov 2010 22:21

AW: Mein Programm funktioniert über eine Verknupfung
 
Du Hast dann Glück gehabt ;)
Und die Lösung jetzt ! Kann ich das Problem bei dem Toll "Inno" korrigieren oder was ? :(

Ich verwende Inno Setup v5.3.10

Oder kommen wir zurück was @wicht geschrieben haben
von "working directory" ?
Delphi-Quellcode:
[Icons]
; NOTE: Ensure that you always include and set the WorkingDir.
; Filename is the "Target" parameter in your properties
; WorkingDir is the "Start In" parameter in your properties
; This is where the current directory will be set in your program at start up.
quelle:
http://webcache.googleusercontent.co...&ct=clnk&gl=de

Wie gesagt, ich habe die Version Inno Setup 5.3.10
Aber bei der Version 5.3.11 wurde das Problem behoben
http://webcache.googleusercontent.co...&ct=clnk&gl=de

Bummi 7. Nov 2010 22:44

AW: Mein Programm funktioniert über eine Verknupfung
 
Leider muß ich hier passen, wir verwenden kein INNO.
Bei uns ist InstallAware im Einsatz, hier fehlte einfache eine Eigenschaft für das Arbeitsverzeichnis.

wicht 7. Nov 2010 22:47

AW: Mein Programm funktioniert über eine Verknupfung
 
Dann müsste an das Icon wohl sowas wie "WorkingDir: {app}" mit angegeben werden. Finde ich aber unschön, besser ist es meiner Meinung nach, wenn das Programm vom Ort der .exe ausgeht, wenn es Dateien sucht (wie schon oben beschrieben..).

Bummi 7. Nov 2010 23:00

AW: Mein Programm funktioniert über eine Verknupfung
 
ich gebe "wicht" recht, besser ist es wenn die Anwendung nicht abhängig ist.
Falls Du das mit INNO nicht in den Griff bekommst kannst Du theoretisch ganz schmutzig auch die Verknüpfung aus dem Programm heraus erstellen / reparieren
Delphi-Quellcode:
 var
    IObject : IUnknown;
    ISLink : IShellLink;
    IPFile : IPersistFile;
    PIDL : PItemIDList;
    InFolder : array[0..MAX_PATH] of Char;
    TargetName : String;
    LinkName : WideString;
 begin
    TargetName := Application.ExeName;

    IObject := CreateComObject(CLSID_ShellLink) ;
    ISLink := IObject as IShellLink;
    IPFile := IObject as IPersistFile;

    with ISLink do
    begin
      SetPath(pChar(TargetName)) ;
      SetWorkingDirectory(pChar(ExtractFilePath(TargetName))) ;
    end;


    SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL) ;
    SHGetPathFromIDList(PIDL, InFolder) ;
    LinkName := InFolder + '\MeinProgramm.lnk';
    IPFile.Save(PWChar(LinkName), false) ;
 end;
benötigt uses ShlObj, ActiveX, ComObj;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.
Seite 1 von 4  1 23     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