回答
我已經通過使用ActiveX控件完成了HTA。在VB6中構建控件以獲取屏幕截圖非常簡單。我不得不使用keybd_event API調用,因爲SendKeys無法執行PrintScreen。這裏是代碼爲:
Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const CaptWindow = 2
Public Sub ScreenGrab()
keybd_event &H12, 0, 0, 0
keybd_event &H2C, CaptWindow, 0, 0
keybd_event &H2C, CaptWindow, &H2, 0
keybd_event &H12, 0, &H2, 0
End Sub
這隻會讓你儘可能的窗口到剪貼板。
另一種選擇是,如果您希望截圖的窗口是HTA,那麼只需使用XMLHTTPRequest將DOM節點發送到服務器,然後在服務器端創建屏幕截圖。
+1發送DOM節點到服務器位 – 2010-01-12 05:18:39
我同意與艾倫,這是一個巧妙的方式來潛在地截圖頁面! – Ricket 2010-05-21 00:25:27
什麼是「HTA」? – 2016-05-16 09:51:15
我們對報告錯誤有類似的要求。由於它是針對Intranet的情況,因此我們可以使用瀏覽器插件(如Firefox的Fireshot和Internet的 Explorer的IE Screenshot)。
SnapEngage使用Java applet(1.5+)來製作瀏覽器截圖。 AFAIK,java.awt.Robot
應該完成這項工作 - 用戶只需允許該applet執行該操作(一次)。
而且我剛剛發現了一個關於它的帖子:
龐德爾的,如果這是可以通過設置做整個身體元素變成一個畫布然後使用canvas2image?
一個可能的方式做到這一點,如果在Windows上運行,並且安裝.NET你可以這樣做:
public Bitmap GenerateScreenshot(string url)
{
// This method gets a screenshot of the webpage
// rendered at its full size (height and width)
return GenerateScreenshot(url, -1, -1);
}
public Bitmap GenerateScreenshot(string url, int width, int height)
{
// Load the webpage into a WebBrowser control
WebBrowser wb = new WebBrowser();
wb.ScrollBarsEnabled = false;
wb.ScriptErrorsSuppressed = true;
wb.Navigate(url);
while (wb.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }
// Set the size of the WebBrowser control
wb.Width = width;
wb.Height = height;
if (width == -1)
{
// Take Screenshot of the web pages full width
wb.Width = wb.Document.Body.ScrollRectangle.Width;
}
if (height == -1)
{
// Take Screenshot of the web pages full height
wb.Height = wb.Document.Body.ScrollRectangle.Height;
}
// Get a Bitmap representation of the webpage as it's rendered in the WebBrowser control
Bitmap bitmap = new Bitmap(wb.Width, wb.Height);
wb.DrawToBitmap(bitmap, new Rectangle(0, 0, wb.Width, wb.Height));
wb.Dispose();
return bitmap;
}
,然後通過PHP你可以這樣做:
exec("CreateScreenShot.exe -url http://.... -save C:/shots domain_page.png");
然後你在服務器端有截圖。
谷歌在Google+中這樣做,一位有才華的開發人員對其進行了逆向設計並生產了http://html2canvas.hertzen.com/。要在IE中工作,您需要一個畫布支持庫,例如http://excanvas.sourceforge.net/
我發現的另一個可能的解決方案是http://www.phantomjs.org/,它允許用戶非常輕鬆地截取頁面的截圖以及更多。雖然我對這個問題的原始要求不再有效(不同的工作),但我可能會將PhantomJS整合到未來的項目中。
截取Javascript的一個很好的解決方案是由https://grabz.it。
他們有一個靈活和簡單易用的屏幕截圖API,可供任何類型的JS應用程序使用。
如果你想嘗試它,首先你應該得到授權app key + secret和free SDK
然後,在你的應用程序,實施步驟是:
// include the grabzit.min.js library in the web page you want the capture to appear
<script src="grabzit.min.js"></script>
//use the key and the secret to login, capture the url
<script>
GrabzIt("KEY", "SECRET").ConvertURL("http://www.google.com").Create();
</script>
截圖可以用定製不同parameters。例如:
GrabzIt("KEY", "SECRET").ConvertURL("http://www.google.com",
{"width": 400, "height": 400, "format": "png", "delay", 10000}).Create();
</script>
就這樣。 然後只需稍等片刻,圖像就會自動出現在頁面的底部,而無需重新加載頁面。
截屏機制還有其他功能,您可以探索here。
也可以在本地保存屏幕截圖。爲此,您需要使用GrabzIt服務器端API。欲瞭解更多信息,請查看詳細指南here。
- 1. Phantomjs - 截取網頁的屏幕截圖
- 2. 如何在運行javascript後截取網頁的屏幕截圖
- 3. 獲取網頁截圖
- 4. 如何抓取網站並截取每個網頁的截圖?
- 5. 如何從asp.net中的網頁表單截取網址截圖?
- 6. 如何截取使用php的網頁截圖?
- 7. 如何使用VBA截取網頁截圖?
- 8. 如何使用Perl截取網頁截圖?
- 9. 阻止用戶截取網頁截圖的方法有哪些?
- 10. 如何使用PHP截取外部網頁的iFrame的截圖?
- 11. 如何截取網站的截圖
- 12. webdriverio - 截取整頁的屏幕截圖
- 13. 如何截取網頁帶有.NET的截圖?
- 14. 如何使用javascript或jquery獲取網頁的截圖?
- 15. Python獲取網頁截圖調色板
- 16. 從網頁抓取屏幕截圖
- 17. 長網頁的Android截圖
- 18. 如何使用Python截取網站截圖/圖像?
- 19. 網站抓取和截圖
- 20. 獲取頁面的截圖
- 21. C++截取屏幕截圖
- 22. 截取iFrame的截圖
- 23. 截取屏幕截圖
- 24. iOS截取tableview的截圖
- 25. 如何截取android截圖
- 26. 使用java拍攝網頁截圖
- 27. 使用html5/javascript截取整個屏幕的截圖?
- 28. 使用HTML5/Canvas/JavaScript在瀏覽器中截取屏幕截圖
- 29. 使用REST API截取OneNote頁面的截圖
- 30. 抓取截圖
你能澄清你爲什麼要這樣做嗎?也許有其他的解決方案來截圖。 – andyuk 2008-09-13 10:31:12
我正在尋找讓用戶粗略設計他們想要的東西,一點草圖和一點點拖拽物品。然後,我希望這個「設計」可以用作生產過程中某些部分的說明。這絕對是一個用戶參與的步驟,在這裏沒有任何祕密:) – 2008-09-13 15:08:27