2015-07-20 124 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。 –