PHP - 有没有机会通过exec()运行GUI程序?

时间:2012-06-30 15:44:35

标签: php windows exec shell-exec

我需要使用exec

运行网络浏览器(chrome - firefox ..)

我曾尝试使用bat文件(此方法提到here

C:\Users\farok\AppData\Local\Google\Chrome\Application\chrome.exe www.google.com

当我使用Windows打开文件时,每件事情都顺利但是当我使用exec打开它时没有任何反应

我尝试使用BrowserControl

的jar文件
BrowserControl.displayURL("www.google.com");

和bat文件一样,有没有办法做到这一点?

注意:我正在使用wamp 2.2,Apache 2.0,PHP V5.3.8

更新

我在运行此命令后发现

exec('"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "www.google.com" 2> errors.txt');

在任务管理器中打开firefox剂量,但浏览器界面不可见..任何想法?

5 个答案:

答案 0 :(得分:4)

我不是Windows专家,但我认为您需要允许desktop interaction,如果父进程作为Windows服务运行,这不容易/可能。 php在apache进程中运行,你可能已经将其作为服务运行。

尝试停止服务并手动启动httpd.exe ,然后当我通过apache通过localhost url请求脚本时,以下内容适用于win7。我的php通过普通的旧cgi与apache接口。

exec('"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "http://stackoverflow.com/"');

请注意我对引号的使用。

答案 1 :(得分:3)

所以这是我发现here的另一个好的解决方法,我的想法是创建一个执行所需程序的调度程序,并使用命令调用它

希望这有帮助:

shell_exec('SCHTASKS /F /Create /TN _notepad /TR "notepad.exe" /SC DAILY /RU INTERACTIVE');
shell_exec('SCHTASKS /RUN /TN "_notepad"');
shell_exec('SCHTASKS /DELETE /TN "_notepad" /F');

答案 2 :(得分:1)

可能最简单的方法是使用COM(我假设它只能在Windows计算机上本地运行):

<?php
function _exec($cmd) 
{ 
  $WshShell = new COM("WScript.Shell"); 
  $oExec = $WshShell->Run($cmd, 0,false); 
  echo $cmd;
  return $oExec == 0 ? true : false; 
}

_exec("youexe.exe");
?>

取自here

答案 3 :(得分:1)

我通过在Windows上禁用apache服务并使用httpd.exe启动apache解决了这个问题 之后可以使用exec()打开任何GUI窗口程序。

exec("Path_to_mi_program.exe" "file_to_open");

答案 4 :(得分:0)

这只是关于用户。运行程序时,它以系统用户运行。我尝试了runas /user:myusername blabla.exe,但它返回了myusername的密码并退出。

$deneme = shell_exec('runas /user:myusername C:\Windows\Temp\putty.exe');
echo "$deneme";

它返回了:

myusername için parolayı girin: (english: password for myusername)