IPS_Execute parameterübergabe

Hallo,

Ich möchte mit VirtualDub 15 sec capture´n. Hierzu benutze ich folgenden Aufruf:

IPS_Execute(„D:\VirtualDub\vdub.exe“,"/capture /capdevice ManyCam Virtual Webcam /capfileinc D:\Daten\WebSrv\WWWroot\1.avi /capstart 15s",false, false);

Das Problem scheint der Parameter …/capdevice ManyCam Virtual Webcam
zu sein.

Im batchfile funktioniert es mit …/capdevice “ManyCam Virtual Webcam“
wie bekomme ich in den IPS_Execute Befehl die „“ hinein`?

Gruß Tom_

Hallo Tom,

schon mal hier nachgesehen.

IPS_ExecuteEx - IP-Symcon :: Automatisierungssoftware

Hallo Rainer,

ja habe ich auch getestet… es funktioniert nicht.
folgender aufruf in der com Box funktioniert einwandfrei:
vdub /capture /capdevice „ManyCam Virtual Webcam“ /capfileinc D:\Daten\WebSrv\WWWroot\1.avi /capstart 15s

Das hier:
$C_Parameter="/capture /capdevice „ManyCam Virtual Webcam“ /capfileinc D:\Daten\WebSrv\WWWroot\1.avi /capstart 15s";
echo $C_Parameter;
IPS_ExecuteEX(„D:\Daten\Prg\VirtualDub\vdub.exe“,$C_Parameter ,false, false,0);
funktionert auch nicht, aber das echo von $C_Parameter sieht gut aus…

ich bin ratlos…

Hallo Tom,

wenn du das hier auch schon kennst, kann ich dir leider auch nicht weiter helfen.

Hi!

Hast du´s schonmal mit

'vdub /capture /capdevice "ManyCam Virtual Webcam" /capfileinc D:\Daten\WebSrv\WWWroot\1.avi /capstart 15s'

versucht?

1 Idee:


$ C_Parameter

… da ist ein Leerzeichen?

2 Idee:

Welches Betriebssystem?
-ab Vista Session ID 1 benutzen

  • nein, kein leerzeichen.

Ich bin aber einen schritt weiter,
vdub startet jetzt, bekommt aber den letzten parameter nicht mehr mit
(Der bestimmt wie lange der capture läuft - hier 2 sec.)

$C_Parameter="/capture /capdevice ManyCam Virtual Webcam /capfileinc D:\Daten\WebSrv\WWWroot\1.avi /capstart 2s ";
$C_Ausfuehren= "D:\Daten\Prg\VirtualDub\vdub.exe ";
echo $C_Ausfuehren;
echo $C_Parameter;

IPS_ExecuteEx($C_Ausfuehren,$C_Parameter ,false, false,0);

??

Ich würde es einmal mit dem originären PHP Befehl versuchen:

shell_exec ('D:\Daten\Prg\VirtualDub\vdub.exe "/capture /capdevice ManyCam Virtual Webcam /capfileinc D:\Daten\WebSrv\WWWroot\1.avi /capstart 2s"');

Klappt bei mir einwandfrei, allerdings mit einem anderen Programm…

Danke für die vielen Tips, aber… leider (noch)
keinen Erfolg.

auf :

shell_exec ('D:\Daten\Prg\VirtualDub\vdub.exe "/capture /capdevice ManyCam Virtual Webcam /capfileinc D:\Daten\WebSrv\WWWroot\1.avi /capstart 2s"');

reagiert VirtualDub überhaupt nicht. Es ist in Taskmanager nichts zu sehen.

Also was hier vorgeschlagen wurde ist nicht ganz falsch, aber es fehlt quasi überall an den details. Präzision dürfte hier der Schlüssel zum Erfolg sein.

dieser Ausdruck, sagst du, funktioniert in der Batch.

vdub /capture /capdevice „ManyCam Virtual Webcam“ /capfileinc D:\Daten\WebSrv\WWWroot\1.avi /capstart 15s

In der Doku kannst du nachlesen wie genau die Parameter übergeben werden müssen.

Das Exe-File muss von den Parametern getrennt übergeben werden. Der Rest, also die Parameterliste soll statisch, also unverändert bleiben. Darum darfst du auf garkeinen Fall die doppelten Anführungszeichen um den String setzen. Wenn du das nicht tust hat das gleichzeitig den Vorteil, dass du sie innen, also in der Parameterliste, verwenden kannst.

Ich würde daher - blind und ungetestet - folgendes Vorschlagen:

IPS_Execute('c:\programme\Bla\vdub.exe', '/capture /capdevice "ManyCam Virtual Webcam" /capfileinc D:\Daten\WebSrv\WWWroot\1.avi /capstart 15s', nil, nil);

Gruß,

Toni

Hallo Tonic,

ein capture erstellt VirtualDub nur so:

IPS_ExecuteEx('D:\\Daten\\Prg\\VirtualDub\\vdub.exe ', '/capture /capdevice ManyCam Virtual Webcam /capfileinc D:\\Daten\\WebSrv\\WWWroot\\1.avi /capstart 5 s', false, false,0);

Im Taskmanager ist zu sehen das VirtualDub im Userkontext ausgeführt wird.
Hier wird eine capture Datei geschrieben, aber… immer weiter.
→ dieser Parameter /capstart 5 s wird nicht beachtet. (nach 5 sec ausschalten)
Den Parameter vorher zu setzen bringt nix (vorher wird er auch im batchfile ignoriert)

mit:

IPS_Execute('D:\\Daten\\Prg\\VirtualDub\\vdub.exe ', '/capture /capdevice ManyCam Virtual Webcam /capfileinc D:\\Daten\\WebSrv\\WWWroot\\1.avi /capstart 5 s', false, false);

wird VirtualDub im System Kontext ausgeführt. und schreibt kein capture

der Aufruf des batchfiles mit IPS zeit gleiches verhalten.
Der Aufruf mit Doppelklick hingegen funktioniert einwandfrei. :confused:

Gruß Tom_ :confused::confused::confused:

Versuche meinen Beitrag noch einmal genau zu lesen. Wenn das nicht geht kann ich dir heute abend nicht mehr helfen.

Toni

Hallo Tonic,

ich habe es versucht so wie du es beschrieben hast, leider ohne Erfolg.

Es scheint das die \ nur als \ ausgewertet werden können (jedenfalls beim Aufruf aus IPS und PHP heraus)

Gibt es eine Möglichkeit die übergebenen Parameter in einen Testprogramm anzeigen zu lassen, um zu prüfen ob sie richtig übergeben werden?

Gruß Tom_

Hab mir mal VDub drauf gemacht und meine alte Webcam rausgepult. Folgende Zeile funktioniert bei mir und legt eine 38MB große Datei an.

  IPS_ExecuteEx('c:\dings\Vdub\vdub.exe', '/capture /capdevice "Logitech QuickCam Express" /capfileinc C:\1.avi /capstart 15s', false, false, 0);

Gruß,

Toni

Hallo zusammen,

also ich kenne zwar vdub nicht, aber ich hatte mit dem IPS_Execute auch so meine speziellen Erfahrungen:

WINXP: Wenn ich am Server den Administrator-User mit Kennwort versehe, so funktionieren einige Proramme nicht richtig, wenn ich sie mit IPS_Execute ausführe. Dürfte damit zu tun haben, dass die Programme ja vom Treiber aus mit dem Systemkonto aufgerufen werden. Lösche ich das Passwort des Administrator funktioniert alles einwandfrei.

Vielleicht geht euer Problem auch in diese Richtung (vdub vom Treiber aus aufgerufen hat zB keine Rechte, das File auf der Platte anzulegen). Falls nicht, war’s zumindest einen Versuch wert.:wink:

Gruß
Rubberduck

Aber bislang war auch noch kein anderer Vorschlag mit richtiger Anführungszeichensetzung :wink:

Toni

Hallo Tonic,

vielen dank für´s testen.
Ich habe gerade die Befehlszeile

 IPS_ExecuteEx('c:\dings\Vdub\vdub.exe', '/capture /capdevice "Logitech QuickCam Express" /capfileinc C:\1.avi /capstart 15s', false, false, 0);

in eine neues Skript eingefügt und getestet. Es funktioniert. Ich vermute das das ursprüngliche Skript doppelt getriggert wurde. Dadurch wurden die Parameter von Vdub nicht richtig ausgeführt. (Wenn ich das Testskript schnell doppelt starte verhält es sich so…)
Nur werde ich mit Semaphore verhindern das Vdub nochmalig gestartet werden kann.

Danke an alle beteiligten.

Gruß Tom_:):):):slight_smile:

habe dein rat bevolkt hat auch wunderbar funktioniert