2015-07-20 40 views
-4

我正在尝试使用PHP Nightrain来准备桌面应用程序。 我想每隔10秒后拍摄一个打开的窗口。我尝试使用html2canvas,但它正在采取应用程序打开页面的屏幕截图。 如果我打开微软的话并在里面工作,那我想用PHP的屏幕截图。 是否有可能使用PHP? 还有一件事我想使用与OS兼容的PHP进行桌面应用程序。如何使用PHP截取当前窗口的截图?

+1

不,这是不可能的,除非PHP代码在客户机上运行(不太可能,因为PHP通常运行在服务器端)。你正在尝试的是一个严重的隐私问题,这可能是为什么没有这样的API存在。唯一可以做到这一点的方法是通过浏览器扩展和/或NSAPI/PPAPI/ActiveX小程序。 –

+0

使用PHP Nightrain应用程序将像桌面应用程序一样运行,并且它不在浏览器中运行。如果我运行PHP Nightrain的exe文件,它会打开一个窗口。 –

+0

在这种情况下,如果Nightrain没有这样的API,那么可以使用'shell_exec'等来调用外部可执行文件。OS X为此提供了一个内置命令。关于其他操作系统的IDK。 –

回答

0

这不能单独使用php来完成。你需要javascript来截取屏幕截图,将它转换成一个字符串并通过ajax发送给一个php脚本,然后保存内容。您可以使用此库http://html2canvas.hertzen.com/。现在魔术发生在代码的接下来的几行:

// an example html page 
<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script> 
    <script type="text/javascript" src="./javascripts/html2canvas.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $('#screenshot').on('click', function(e){ 
       e.preventDefault(); 
       html2canvas($('body'), { 
        onrendered: function(canvas){ 
         var imgString = canvas.toDataURL(); 
         window.open(imgString); 
         $.ajax({ 
          url: '', 
          type: 'POST', 
          data: { 
           file: imgString 
          }, 
          success: function(response){ 
           //alert('Everything works fine.'); 
          }, 
          error: function(response){ 
           //alert('Server response error.'); 
          } 
         }); 
        } 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 

至于IE 7 & 8支持老话 - 谷歌(和其他大型网站)都表示支持高达1版从最新的背。所以,如果当前版本是10,他们只会支持9和10.我相信这是一个很好的做法,我也将它与我的客户一起使用。 IE < 8如果您正在开发先进的网页,可能会遇到很大的麻烦。如果您的客户端仍然坚持其IE 7 & 8的支持,您可能希望签Modernizrhtml5shiv这也许能够帮助你带来的IE浏览器对HTML5的支持。

+0

“我试过使用html2canvas,但它正在使用应用程序打开页面的屏幕快照。如果我打开Microsoft word并在其中工作,那么我想使用PHP的屏幕截图。” –

+0

我尝试过使用html2canvas,但它正在运行应用程序的页面。我希望PHP应用程序在每10秒钟后运行一次,并在系统中工作时拍摄屏幕截图。 –

0

只会在服务器上运行,检查这个怎么样:

<?php 
// capture the screen 
$img = imagegrabscreen(); 
imagepng($img, 'screenshot.png'); 
?> 

OR

<?php 
// Capture the browser window 
$Browser = new COM('InternetExplorer.Application'); 
$Browserhandle = $Browser->HWND; 
$Browser->Visible = true; 
$Browser->Fullscreen = true; 
$Browser->Navigate('http://www.stackoverflow.com'); 

while($Browser->Busy){ 
    com_message_pump(4000); 
} 

$img = imagegrabwindow($Browserhandle, 0); 
$Browser->Quit(); 
imagepng($img, 'screenshot.png'); 
?> 

搜索是一个快速的答案有用)

Website screenshots using PHP

+0

它捕获浏览器窗口,但我想捕获系统打开的窗口。这仅适用于Windows。 –