2011-07-20 16 views
2

私はWindows 7でビデオプレーヤーを開こうとしていますが、それは起こりそうにないようです。それが動作する唯一の方法はバックグラウンドです - サウンドが聞こえるし、それがプロセスリストにありますが、ビデオプレーヤー自体は見ることができません。タスクバーや通知エリアには表示されません。PHPでフォアグラウンドでビデオプレイヤーを実行

WScript.Shellを使用してexecコマンドとCOMクラスを試しました。私はコマンドラインの前で開始しようとしましたが、まだ何もしませんでした。私がcmd.exeで同じ行を使用すると、それが動作し、プレーヤーがポップアップして再生を開始しますが、phpではバックグラウンドで起動するか、まったく起動しません。私が使用

コードは以下の通りです:

exec('start "C:\Program Files\Daum\PotPlayer\PotPlayer.exe" "D:\mov.avi"');

を `$新しいCOM( "WScript.Shell")=ワット; $ o = $ w->実行(「C:\ Program Files \ Daum \ PotPlayer \ PotPlayer.exe」「D:\ mov.avi」、1、false);

--Edit--

これは私にすべての時間に発生 - あなたが長い時間を検索し、すべてはあなたの質問を投稿願って失ってしまった直後。次の10分であなたは戻って拾い読みし、その質問に対する答えを見つけます。

とにかく、私はこれを動作させました。実行 - >services.msc apache server serviceを見つけ、プロパティを選択してください。 [ログオン]タブで、[サービスとデスクトップとの対話を許可する]チェックボックスをオンにします。 apacheを再起動し、最後のスクリプトが動作します。メッセージを表示するかどうかを尋ねるウィンドウが表示されたら、[はい]をクリックして動画が再生されます。デスクトップに戻るをクリックする前に、必ずビデオプレーヤーのウィンドウを閉じてください。そうでない場合、再生が続行され、タスクマネージャから停止する必要があります。 `

答えて

0

「サービスがデスクトップとやりとりすることを許可する」に頼るべきではありません。問題が発生する可能性があります。 (実際には、Windows 7で削除されていないと思われたのですか?)

これはセッション0分離のためです。基本的に、サービスはユーザーとはまったく異なる空間で実行されます。プロセスは実行できますが、ユーザーは直接対話できません。 「サービスがやりとりできるようにする」ボックスにチェックを入れると、その壁が壊れてしまいますが、私はそれを永遠に守るつもりはありません。

http://msdn.microsoft.com/en-us/windows/hardware/gg463353

+0

フォアグラウンドでビデオプレーヤーを開くのは基本的に不可能です。ユーザーはPHPエクステンションを作成せずにPHPを見たり、やりとりしたりできますか? –

+1

必要なものは、プロセス間通信の何らかの形です。これは、データベースやファイル内のコマンドのキューと同じくらい単純なものでも、共有メモリと同じくらい堅牢なも​​のでもかまいません。 http://stackoverflow.com/questions/1746207/how-to-ipc-between-php-clients-and-ac-daemon-serverまたはhttp://www.re-cycledair.com/php-dark-artsを参照してください。 -shared-memory-segments-ipc。また、何らかの.NET Remotingをインスタンス化することもできます。 – Brad

0

あなたは、システムによって、Webサーバを起動した場合。 PHPプロセスと子プロセスは "システム"によって実行され、プロセスはバックグラウンドにあります。手動でWebサーバを起動してください。

関連する問題