Also erstmal würde ich dich bitten für jede Frage (es sind ja mittlerweile schon 3 hier)ein neues Thema zu eröffnen, damit andere das, falls Sie auch mal danach suchen, das auch per Suche finden können!
Dann:
Was soll das??:
Delphi-Quellcode:
with FilterGraph1 as IDvdControl2 do
begin
If PlayForwards(8.0,DVD_CMD_FLAG_None, DvdCmd) then PlayForwards(1.0,DVD_CMD_FLAG_None, DvdCmd);
end;
Das kann ja nicht gehen, denn wenn du dir mal die Funktion ansiehst in der DirectShow9.pas, wirst du feststellen, das der Rückgabewert vom Typ HResult ist, und keine Rückgabe, ob er gerade Vorwärts spult oder nicht!
Um die Funktion zum Spulen zu nutzen, mache es ungefähr so:
Delphi-Quellcode:
procedure TForm1.ForwaertsClick(Sender: TObject);
var
DvdCmd : IDvdCmd;
DVDControl2: IDVDControl2;
begin
if FilterGraph1.Active then
If Succeeded(FilterGraph.QueryInterface(IID_IDVDControl2, DVDControl2)) then
{if Succeeded() kannst du benutzen, um Abzufragen ob die Funktion erfolgreich ausgeführt wurde}
DvdControl2.PlayForwards(8.0, DVD_CMD_FLAG_None, DvdCmd);
DVDControl2 := Nil;
end;
{Damit würde er mit 8 Facher geschwindigkeit vorspulen}
Das selbe kannst du dann auch mit rückwärtsspulen machen...
Um wieder normal abzuspielen, kannst du die geschwindigkeit vom Forwärtsspulen wieder auf 1 setzen, oder du machst wieder ne einfache abfrage und führst Play aus:
Delphi-Quellcode:
if FilterGraph.Active then
FilterGraph.Play;
und zu dem Thema, wie man herrausfinden kann ob (und ob vorwärts oder rückwärts) gab es auch ne lösung, da müsste ich aber auch erstmal wieder suchen... kann ich mich nicht mehr genau erinnern!!
PS: Ach ja, das hardcoded, und muss wohl noch angepasst werden...