php exec()与windows 8 metro应用程序的响应不同
我想在新的
Windows 8开始菜单中更改桌面应用程序的磁贴图标.
所以他们会适应其他地铁应用程序. 我做了一个简单的metro应用程序,调用一个简单的localhost php文件 <?php // check if the chrome is in the task list exec('tasklist /FI "IMAGENAME eq chrome.exe" 2>NUL | find /I /N "chrome.exe">NUL'); // get a return value I can check $runing = exec('if "%ERRORLEVEL%"=="0" echo Programm is running'); if ($runing === 'Programm is running'){ // the program is open already echo $runing; } else { // the program is not running and should be opened exec('C:UsersGerdyAppDataLocalGoogleChromeApplicationchrome.exe'); } ?> 如果我从chrome启动此文件,则回显“Programm正在运行”. 那很棒! 如果我从Windows启动并且Chrome未运行,则Chrome无法启动. 如果我排除if语句并运行. exec('C:UsersGerdyAppDataLocalGoogleChromeApplicationchrome.exe'); 从开始菜单. 所以我想我的问题是: 这个模型实际上适用于任何其他程序而不是浏览器. 我最好的猜测是,它对我的??命令做的更少,而且更多地与chrome本身有关. 解决方法
您可以使用Windows Management Instrumentation:
如果您尚未使用wmic,则应通过从cmd.exe运行wmic来安装它. WMIC Installing... please wait. 之后wmic准备好使用: function getProcessId( $imagename ) { ob_start(); passthru('wmic process where (name="'.$imagename.'") get ProcessId'); $wmic_output = ob_get_contents(); ob_end_clean(); // Remove everything but numbers and commas between numbers from output: $wmic_output = preg_replace( array('/[^0-9n]*/','/[^0-9]+n|n$/','/n/'),array('','',','),$wmic_output ); if ($wmic_output != '') { // WMIC returned valid PId,should be safe to convert to int: $wmic_output = explode(',$pids); foreach ($wmic_output as $k => $v) { $wmic_output[$k] = (int)$v; } return $wmic_output; } else { // WMIC did not return valid PId return false; } } // Find out process id's: if ($pids = getProcessId( "chrome.exe" )) { foreach ($pids as $pid) { echo "Chrome.exe is running with pid $pid"; } } else { echo "Chrone.exe is not running"; } 我没有对此进行测试,只是把它写出来,所以可能会有一些修复,你应该通过从命令行运行它来检查wmic的输出,使用相同的args来查看preg_replace()是否正确(从wmic的输出获取pid) . 更新: 测试似乎wmic没有返回任何状态代码所以更新我的PHP函数来反映这个行为. 更新: 现在它也处理多个进程并将所有pid作为索引数组返回,或者在没有进程运行时返回false. 关于WMI: Windows Management Instrumentation是非常强大的界面,因此是wmic命令行工具. Here is listed some of WMI features (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |