Avi/Mpeg abspielen, Variablen-Ordner öffnen

Da Hacker

Erfahrenes Mitglied
Hallo Community,

es ist mir wirklich peinlich diesen Forenabschnitt mit einem solch banalen Thread zu belegen. Die Forensuche und Yahoo! haben nichts ergeben.
Probleme:
1. Ich würde gerne ein AVI-File und eine MPEG-File abspielen. Aber jetzt nicht auf meiner Form, nicht mithilfe einer Komponente und nicht mit einer API.
Nein, was ich will ist, die AVI/MPEG Datei so zu öffnen, als ob ich sie per Hand ausgeführt hätte. Das heißt, der Film soll mit dem verknüpften Programm ausgeführt werden.
Folgendes habe ich mir überlegt:
Code:
ausfuhren = Shell("MediaPlayer" + Pfad, vbnormalfocus)
Tja, nun scheint der Shell-Befehl aber nur für EXE-Anwendungen prädestiniert zu sein.
Ich habe in meinem Projekt die Variable 'Pfad = app.path & "\Filme\Anacondas.avi"'.
Gibt es noch eine Ableitung des Shell Befehls, der auch Videos, Musik und Bilder öffnen kann(open ist ja für das Auslesen und Schreiben von Dateien bestimmt)?

2. Dann habe ich noch die Variable 'Verzeichnis = app.path & "\Videos". Sagen wir mal ich möchte einen Ordner öffnen, dann lautet die Syntax so:
Code:
offnen = Shell("explorer.exe" C:\Testordner, vbmaximizedfocus)
Aber was, wenn ich das Verzeichnis in einer Variable gespeichert habe. Meine Versuche die Variable an 'explorer.exe' anzuhängen sind kläglich gescheitert!

Das wars fürs Erste. Ich denke schon, dass ich mich gut in VB auskenne, aber irgendwie scheint die Lösung für das "normale" Öffnen variabler Ordner und AVI- bzw. MPEG-Dateien komplizierter oder umständlicher zu sein. Wenn es geht, dann möchte ich den Weg der Benutzung von API's umgehen(finde die momentan zu lang und zu dumm!).

Wie immer weiß ich, dass Ihr mir helfen könnt und ich bin schon gespannt, wie denn die Lösung lautet.

//EDIT: Hier noch die Fehlermeldungen:
Variablenordner öffnen: "Laufzeitfehler 53: Datei nicht gefunden"
Avi per Shell öffen: "Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument"
Ich wäre ebenfalls froh, wenn ihr mir Links zu bestehenden Tutorials.de-Beiträgen zeigen könntet, denn wahrscheinlich hab ich die falschen Stichwörter eingegeben(Avi abspielen, etc.)

Ciao:
Da Hacker :offtopic:
 
Zuletzt bearbeitet:
Was hast du gegen API-Funktionen? Da gibt es eine ganz schöne, die kann Dateien so öffnen als hätte man einen Doppelklick drauf gemacht: ShellExecute
Code:
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
		"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
		As String, ByVal lpFile As String, ByVal lpParameters _
		As String, ByVal lpDirectory As String, ByVal nShowCmd _
		As Long) As Long
 
ShellExecute(0, "Open", PfadZurDatei, "", App.Path, 1)
Das heißt, du brauchst du API nur einmal zu deklarieren und dann insgesamt eine Zeile, um deine Datei zu öffnen!
 
Yo Shakie,

vielen Dank für deine Antwort. Variablen Ordner öffnen klappt, Exe's in Variablen Ordnern öffnen klappt, AVI im Variablen Ordner öffnen klappt, MPEG's im Variablen Ordner öffnen... ...KLAPPT NICHT :O :confused: ! Deine Lösung ist super, allerdings gibt es zwei Mankos:

1. MPEG-Datei wird nicht geöffnet!
2. Ich musste bei Form_Query_Unload, den END Befehl angeben, da sonst das Programm im Hintergrund weiterläuft!

Jetzt müsste ich nur noch wissen, wie ich MPEG's öffnen kann und alles ist super! Ich mache nämlich ein Autostart-CD-Menü, als Geschenk für unseren Wichteltag :roll: !

Hier mal :offtopic: meine Gründe API's zu hassen:
1. Sie sind zu lang - man braucht ein Referenzbuch, um sie zu benutzen.
2. Sie sind zum Teil unlogisch.
3. Sie "zerstören" mein Programm - siehe oben(2.).
4. Sie lassen die Größe meines Progs in die Höhe schnellen! Shell, wäre da doch viel kürzer und Bytesparender!
5. Sie funktionieren nicht immer - gut, das ist dann vielleicht auch mein Fehler, naja!

Die API's sind natürlich schon echt eine Hilfe, Leute zu beeindrucken(Runde Form, Rechnertöne erzeugen, MsgBox-Buttons ändern, und und und), aber kann es nicht einfach ebenso Befehle dafür geben, wie z.B. "Rnd", "Mid", oder sonst so etwas Bei VB-Magazin.de hat man mich schon aufgeklärt, dass ich es als API-Hasser ja nicht sehr weit im Programmierbereich schaffen werde, usw. Ich beharre jedoch darauf, dass API's umständlich sind. Vielleicht etwas naiv, naja. Irgendwann werde sogar ich meine Meinung gegenüber API's ändern, denn schließlich möchte ich ja auch mal berühmt werden...

//2.EDIT: Shit, sorry, ich habe den Ordner falsch angegeben! MPEG, war bei mir MPG! Sorry nochmal! Jetzt gehts!

Wenn du mir als Lösung nur die Internetseite genannt hättest, dann wäre ich total verzweifelt, denn da verstehe ich ja gar nichts, deswegen

Ciao und nochmals vielen, vielen Dank!:
Da' Hacker
 
Zuletzt bearbeitet:
2. Ich musste bei Form_Query_Unload, den END Befehl angeben, da sonst das Programm im Hintergrund weiterläuft!
Das finde ich ehrlich gesagt äußerst seltsam und unlogisch. Ich kann mir kaum vorstellen, dass das an der Verwendung der API-Funktion liegt.
Aber probier es sonst mal so:
Code:
ShellExecute(Me.hwnd, "Open", PfadZurDatei, "", App.Path, 1)
oder vielleicht
Code:
ShellExecute(0, "Open", PfadZurDatei, VerzeichnisZurDatei, App.Path, 1)

Zu deiner API-Einstellung:
Wie willst du denn z.B. mit VisualBasic Werte aus der Registrierung lesen? Bei VB gibt es keine Funktion, die das macht (abgesehen davon, dass man wenigstens die Einstellungen für sein eigenes Programm in der Registrierung speichern und laden kann)!
 
Hallo Shakie,

es war so, dass ich die Exe's immer kompiliert habe und in meinem speziellen Ordner getestet habe. Die vorhandenen musste ich dazu löschen, es kam aber der Fehler: "Datei kann nicht gelöscht werden...". Aber das hat sich ja jetzt erledigt. Vielen Dank für deine weiteren Lösungswege! Es funktioniert jetzt alles so wie ich es haben wollte - das ListBox-Problem sollte jetzt auch erledigt sein.

@API-Einstellung:
Ja, das ist das Problem - wahrscheinlich gar nicht! :)
Nein, es ist momentan so, dass ich API's einfach hasse. Sicher, irgendwann werde ich nicht um sie herumkommen, da man ja - wie bereits oben beschrieben - viel mit ihnen machen kann.
Den Befehl "SaveSetting" kenne ich auch schon. Der Nachteil gegenüber den API's ist, dass SaveSetting zu unkoordiniert Einträge macht.

Also,
du hast mir sehr geholfen und ich hoffe, dass mein Programm morgen beim Wichteln gut ankommt!
Ciao:
Da' Hacker
 

Neue Beiträge

Zurück