PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datei aus delphi heraus öffnen/starten


hofmetzger
2003-08-19, 14:37:01
Hallo!

Ich schreibe gerade ein CD-Autostartmenü für meine DivX-filme. dazu benutze ich den befehl

ShellExecute(Form1.Handle, 'open', PChar('badcompany.mkv'),PChar(''), '', SW_SHOWNORMAL)

um die entsprechende datei zu starten. bei textdateien, executables, .avi's funktioniert das ohne probleme, bei .mkv nicht. das problem könnte bei der dateiregistrierung liegen, da windows ja "von natur aus" weiss, was es mit .txt und co tun soll, bei .mkv hingegen nicht. obwohl ich in windows .mkv mit einem player verknüpft habe, tut sich bei ausführung des o.g. befehls garnichts.
ich kann ausschliessen, dass die datei nicht gefunden wird.
wenn ich die datei von hand in die cmd eingebe, wird sie geöffnet.

meine frage ist nun, ob es eine alternative zu dem befehl gibt, oder ob das problem anderweitig zu lösen ist.

durch googlen habe ich leider nicht viel gefunden, das problem hatte offenbar kaum einer.

(systeminfos win2k, delphi6)

x-dragon
2003-08-20, 11:08:05
Wirklich ein seltsames Problem. Versuch doch mal die eigentliche Anwendung zu starten und die Datei als Parameter mit zu übergeben.

Hast du dir ansonsten die Einstellung des Dateityps mal genauer angeschaut, also im Arbeitsplatz unter Extras/Ordneroptionen/Dateitypen ?

hofmetzger
2003-08-20, 11:31:41
Original geschrieben von X-Dragon
Wirklich ein seltsames Problem. Versuch doch mal die eigentliche Anwendung zu starten und die Datei als Parameter mit zu übergeben.

Hast du dir ansonsten die Einstellung des Dateityps mal genauer angeschaut, also im Arbeitsplatz unter Extras/Ordneroptionen/Dateitypen ?

das mit anwendung starten ('mplayerc.exe badcompany.mkv') funktioniert irgendwie auch nicht, anwendung selbst ('mplayerc.exe') geht - hilft mir aber nicht weiter. im übrigen will ich das eh vermeiden, es soll die anwendung gestartet werden, mit der die datei verknüpft ist.

ich denke also, dass es an der dateitypregistrierung liegt. unter ordneroptionen/dateitypen habe ich den eintrag .mkv-datei selbst angelegt und eine anwendung zugewiesen. mehr kann man aber nicht einstellen. ich kann mich aber erinnern dass es da früher (win98?) mehr einzustellen gab...

davon mal abgesehen verstehe ich shellexecute nicht ganz: soll diese funktion nicht einen in der cmd eingegebenen befehl simulieren? wenn das so wäre hätte ich ja kein problem...

x-dragon
2003-08-20, 11:50:19
Hast du den Dateityp direkt in den Ordneroptionen selbst eingetragen? Am besten ist es natürlich das direkt von einer Anwendung zu machen bzw mit [Shift]+Rechte Maustaste auf der Datei und "Öffnen mit ..." und dann diese Anwendung als Standard einzustellen. Dann sollte auf jeden Fall die Dateityp-Registrierung vollständig sein.

hofmetzger
2003-08-20, 12:20:44
Original geschrieben von X-Dragon
Hast du den Dateityp direkt in den Ordneroptionen selbst eingetragen? Am besten ist es natürlich das direkt von einer Anwendung zu machen bzw mit [Shift]+Rechte Maustaste auf der Datei und "Öffnen mit ..." und dann diese Anwendung als Standard einzustellen. Dann sollte auf jeden Fall die Dateityp-Registrierung vollständig sein.

ich weiss :)

hab ich alles versucht. es muss ja aber auch irgendwie registriert sein, denn von der cmd aus klappts ja.

ich bin jetzt dabei über createProcess() die cmd zu starten und als parameter die datei anzugeben. abgesehen davon dass createprocess etwas komplizierter ist, siehts natürlich garnicht gut aus, wenn noch eine cmd geöffntet werden muss...

ausserdem soll sich mein menü nach aufruf der datei beenden, das killt den aufgerufenen prozess dann aber natürlich gleich mit...

x-dragon
2003-08-20, 14:09:00
Mit CreateProcess hab ich selbst noch nicht gearbeitet, aber ich hab hier was gefunden womit du kontrollieren kannst, mit welcher Anwendung ein Dateityp verknüpft ist:
http://www.delphipraxis.net/topic6738_mit+welcher+anwendung+ist+eine+datei+verkn%fcpft.html

[edit]
oder vielleicht ist dies was für dich (habs selbst noch nicht getestet):
http://www.delphipraxis.net/topic1199_programm+starten+ohne+shellexecute.html

hofmetzger
2003-08-20, 15:06:37
Original geschrieben von X-Dragon
Mit CreateProcess hab ich selbst noch nicht gearbeitet, aber ich hab hier was gefunden womit du kontrollieren kannst, mit welcher Anwendung ein Dateityp verknüpft ist:
http://www.delphipraxis.net/topic6738_mit+welcher+anwendung+ist+eine+datei+verkn%fcpft.html

[edit]
oder vielleicht ist dies was für dich (habs selbst noch nicht getestet):
http://www.delphipraxis.net/topic1199_programm+starten+ohne+shellexecute.html

das erste klingt sehr interessant, werd mir beides mal anschauen. Vielen Dank schonmal!=)

hofmetzger
2003-08-20, 16:19:36
Nachtrag:

Super! Danke deines ersten links, bin ich dem problem auf die spur gekommen.(wenn ich windows sage er soll .mkv immer mit d:\mplayerc öffnen, scheint sich windows daran zu erinnern, dass es ja mal ein mplayerc an einem anderen ort gegeben hat, und dort sucht windows den dann auch - jedenfalls wenn delphi "fragt". habs aus der registry gelöscht jetzt gehts.)

vielen dank nochmal, das war die letzte große hürde, damit ist mein programm fast fertig.

x-dragon
2003-08-20, 16:36:31
Original geschrieben von hofmetzger
Nachtrag:

Super! Danke deines ersten links, bin ich dem problem auf die spur gekommen.(wenn ich windows sage er soll .mkv immer mit d:\mplayerc öffnen, scheint sich windows daran zu erinnern, dass es ja mal ein mplayerc an einem anderen ort gegeben hat, und dort sucht windows den dann auch - jedenfalls wenn delphi "fragt". habs aus der registry gelöscht jetzt gehts.)

vielen dank nochmal, das war die letzte große hürde, damit ist mein programm fast fertig. Jaja ab und zu sollte man mal seine Registry ausmisten, aber schön das es jetzt funktioniert :).