PHP - 任何通过 exec() 运行 GUI 程序的机会


PHP - Any chance to run GUI program through exec()?

我需要使用 exec 运行一个网络浏览器(Chrome - Firefox ..)

我尝试使用bat文件(此处提到的此方法)来执行此操作

C:'Users'farok'AppData'Local'Google'Chrome'Application'chrome.exe www.google.com
当我使用 Windows 打开文件时,

一切都很顺利,但是当我使用 exec 打开它时什么也没发生

我尝试通过浏览器控制类使用 jar 文件来做到这一点

BrowserControl.displayURL("www.google.com");

和蝙蝠文件一样,有什么办法可以做到吗?

注意:IM 使用 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');

火狐剂量在任务管理器中打开,但浏览器界面不可见..有什么想法吗?

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

尝试停止服务并手动启动 httpd.exe,然后当我通过 Apache 通过本地主机 URL 请求脚本时,以下内容在 win7 上对我有用。 我的PHP通过普通的旧CGI与Apache接口。

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

注意我对引号的使用。

所以这是我在这里找到的另一个很好的解决方法,这个想法是创建一个执行所需程序并使用命令调用它的调度程序

希望这个帮助:

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');

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

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

可能最简单的方法是使用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");
?>

取自这里

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

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

它返回:

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