回答
我已经通过使用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