Ich brauche ein Programm, dem ich über die Kommandozeile den Dateinamen einer Videodatei übergebe. Dieses soll diese Datei abspielen, dabei in den Vollbildmodus schalten und dann, wenn das Abspielen zu Ende ist, sich selbst beenden.
Ich habe dazu mittels Probieren eine Lösung gefunden, die bei mir sowohl auf dem Desctop-PC mit WinXp und Win7prof-64 funktioniert, auch auf meinem Notebook mit Win7-ultimate-64.
So richtig gefällt mir das nicht, weil ich dazu die Status-Informationen in Form von deutschem WhiteString abfrage. Im Ausland würde das nicht funktionieren, weil da die Meldungen in englisch, französisch oder russisch kämen und meine Abfrage ins Leere laufen würde.
Ich muss zunächst abfragen, ob das Abspielen begonnen hat, weil sonst beim Umschalten in den Vollbildmodus ein Fehler kommt, das darf man nur machen, wenn abgespielt wird.
Die zweite Abfrage (über Status) ist die nach dem Ende des Abspielens, um das eigene Programm zu beenden.
Ich habe das alles in eine Timer-Routine gepackt, da wird aller Sekunden entsprechend abgefragt - das geht sicherlich viel eleganter.
Ich zeige nachfolgend mal meine Lösung...
Delphi-Quellcode:
unit HkMPlayer7u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, MPlayer, OleCtrls, WMPLib_TLB;
type
TForm1 =
class(TForm)
WindowsMediaPlayer1: TWindowsMediaPlayer;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Var
qTimer1DL : Boolean = False;
qPlayAnf : Boolean = False;
iTimerSek : Longint = 0;
sStatus :
String;
sDSN :
String;
procedure TForm1.FormCreate(Sender: TObject);
begin
Align := alClient;
qTimer1DL := False;
qPlayAnf := False;
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if not qTimer1DL
then
Begin
qTimer1DL := True;
iTimerSek := 0;
if ParamCount < 1
then
Close;
sDSN := ParamStr(1);
WindowsMediaPlayer1.URL := sDSN;
End;
Inc(iTimerSek);
sStatus := WindowsMediaPlayer1.status;
// WideString
Form1.Caption := '
HkMPlayer7 ' + sDSN + '
' + sStatus;
if not qPlayAnf
then
Begin
if Length(sStatus) > 11
then
Begin
if Copy(sStatus,1,10) = '
Wiedergabe'
then
Begin
qPlayAnf := True;
WindowsMediaPlayer1.fullScreen := True;
End
else
if iTimerSek > 30
then
Close;
End;
End;
if iTimerSek > 13
then
Begin
if sStatus = '
Beendet'
then
Begin
Close;
End;
End;
end;
end.