- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定以下代码
public static Bitmap PrintWindow(IntPtr hWnd)
{
int width = GetWindowInfo(hWnd).rcWindow.Width;
int height = GetWindowInfo(hWnd).rcWindow.Height;
Logger.log("width and height: " + width + "," + height, 0);
Bitmap bmp = new Bitmap(width, height);
Graphics memoryGraphics = Graphics.FromImage(bmp);
memoryGraphics.CopyFromScreen(0, 0, 0, 0, GetWindowInfo(hWnd).rcWindow.Size);
return bmp;
}
我的应用程序为了屏幕抓取目的拍摄了大量屏幕截图。所以这个方法大约每3秒调用一次。它总是开始很好,但过了一会儿我在这里得到异常(exception)。如果我建立了容错能力(只是在出现异常时重试)它会继续运行,但我的日志显示很多失败的尝试。
以下是 3 个异常(exception):
Exception caught : System.ComponentModel.Win32Exception (0x80004005): The parameter is incorrect
at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation)
at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize)
at MoonHandler.scraping.User32Facade.PrintWindow(IntPtr hWnd) in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\scraping\User32Facade.cs:line 50
at MoonHandler.scraping.MoonFacade.getBMP(Boolean fresh) in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\scraping\MoonFacade.cs:line 37
at MoonHandler.scraping.MoonFacade.isWarpDriveActive() in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\scraping\MoonFacade.cs:line 154
at MoonHandler.logic.MoonLogic.warping_to_belt() in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\logic\MoonLogic.cs:line 113
at MoonHandler.logic.MoonLogic.act() in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\logic\MoonLogic.cs:line 47
Exception caught : System.ArgumentException: Parameter is not valid.
at System.Drawing.Graphics.GetHdc()
at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation)
at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize)
at MoonHandler.scraping.User32Facade.PrintWindow(IntPtr hWnd) in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\scraping\User32Facade.cs:line 50
at MoonHandler.scraping.MoonFacade.getBMP(Boolean fresh) in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\scraping\MoonFacade.cs:line 37
at MoonHandler.scraping.MoonFacade.isWarpDriveActive() in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\scraping\MoonFacade.cs:line 154
at MoonHandler.logic.MoonLogic.warping_to_belt() in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\logic\MoonLogic.cs:line 113
at MoonHandler.logic.MoonLogic.act() in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\logic\MoonLogic.cs:line 47
Exception caught : System.ArgumentException: Parameter is not valid.
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height)
at MoonHandler.scraping.User32Facade.PrintWindow(IntPtr hWnd) in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\scraping\User32Facade.cs:line 48
at MoonHandler.scraping.MoonFacade.getBMP(Boolean fresh) in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\scraping\MoonFacade.cs:line 37
at MoonHandler.scraping.MoonFacade.isWarpDriveActive() in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\scraping\MoonFacade.cs:line 154
at MoonHandler.logic.MoonLogic.warping_to_belt() in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\logic\MoonLogic.cs:line 113
at MoonHandler.logic.MoonLogic.act() in d:\users\npiv\documents\visual studio 2010\Projects\MoonMiner\ConsoleApplication2\logic\MoonLogic.cs:line 47
我知道这是 3 个不同的异常,但我觉得它们是相互关联的。因为它只在运行时开始发生,这是某种内存泄漏吗?我可以用另一种方式截屏吗?
最佳答案
试试这个:
public static Bitmap PrintWindow(IntPtr hWnd)
{
sleep();
int width = GetWindowInfo(hWnd).rcWindow.Width;
int height = GetWindowInfo(hWnd).rcWindow.Height;
Logger.log("width and height: " + width + "," + height, 0);
Bitmap bmp = new Bitmap(width, height);
using (Graphics memoryGraphics = Graphics.FromImage(bmp))
memoryGraphics.CopyFromScreen(0, 0, 0, 0, GetWindowInfo(hWnd).rcWindow.Size);
return bmp;
}
关于c# - 在 .NET 中截取屏幕截图后出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6788276/
图像采集源除了显示控件(上一篇《.NET 控件转图片》有介绍从界面控件转图片),更多的是窗口以及屏幕。 窗口截图最常用的方法是GDI,直接上Demo吧: 1 private
我正在尝试编写一个程序来使用全局热键获取屏幕截图。下面是相应的代码: from datetime import datetime import os from pynput import keyboa
我正在构建一个应用程序,它应该为任何具有 Android 4 及更高版本的无根设备实现屏幕~镜像~,2 帧/秒就足够了。 我正在尝试使用 ADB“framebuffer:”命令来抓取设备屏幕截图 AD
如何使用 C++ 捕获屏幕截图?我将使用 Win32。 请不要使用 MFC 代码。 最佳答案 #include "windows.h" // should be less than and great
代码如下: import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.aw
我目前正在构建一个 Google Chrome 扩展程序,该扩展程序可以从不同页面获取多个屏幕截图并将其发布到端点上。我遇到的问题是时间不对。我的意思是,在页面停止加载之前就太早截取屏幕截图了。其次,
我有一个 View Controller ,其中导航栏是透明的。我的下一个 View 是表格 View ,其中导航栏是白色的。 为了停止不需要的动画,我在表格 View 的“viewDidDissap
我正在尝试从多个 URL 制作屏幕截图。我的代码工作正常,但结果我得到了事件窗口的图像。但我需要带有浏览器顶部的完整屏幕截图(URL) file = open('links.txt', 'r', en
我正在尝试(并实现)获取屏幕截图: robot = new Robot(); BufferedImage biScreen = robot.createScreenCapture(rectScreen
是否有任何应用程序可以拍摄 android 设备的视频/屏幕截图。我知道在桌面上捕获屏幕视频/图像的软件很少,例如 camtasia、snagit。 Android 设备有类似的东西吗? 我知道使用
想要捕获可能处于非事件状态的选项卡的图像。 问题是,当使用此处显示的方法时,选项卡通常在捕获完成之前没有时间加载,从而导致失败。 chrome.tabs.update() 回调在标签页被捕获之前执行。
我想在新的 tkinter 窗口 (TopLevel) 中显示我的屏幕截图,但我不想将其保存在电脑上。当我保存它时它工作正常但是当我尝试从内存加载屏幕截图时出现错误:图像不存在。 我的主窗口是root
我正在 try catch 我当前所在的屏幕,因此当我覆盖下一个 View Controller 时,我可以使它成为它后面的 ImageView 并使其显示为半透明。这是有效的,但现在它在中间产生了一
我正在寻找将 docx(以及后来的 excel 和 powerpoint)文档的第一页转换为图像的方法。我宁愿不手动解析文档的整个 xml,因为这看起来工作量很大;) 所以我想我只是想收集一些关于如何
好吧,碰巧我正在编写一个程序来截取一些屏幕截图,并且在处理另一个进程已经在使用的文件时遇到了一些困难,希望有人能帮助我找到一种方法来“关闭”这个进程或启发我如何继续. //Create a new b
我即将在 App Store 上发布我的应用程序,我想截取我的应用程序的屏幕截图,但状态栏中没有所有信息,例如运营商和 Debug模式等。 我知道 Marshmallow 有一个 System UI
UIGraphicsBeginImageContext(self.reportList.frame.size); CGRect tableViewFrame = self.reportList.fra
是否有任何简洁的方法来访问 android 设备的屏幕截图以编程方式。我正在寻找大约 15-20fps。 我找到了一个代码android\generic\frameworks\base\service
好的,我正在尝试为多个网站运行多个屏幕截图!我已经获得了多个站点的一个屏幕截图,我还可以获得一个站点的多个 Viewport 屏幕截图,但我有 34 个站点需要这样做!那么有人知道用 casperjs
我正在为 iOS 制作一个贴纸包,在将其提交到 App Store 之前,我需要包含至少一张来自 5.5 英寸 iPhone 和 12.9 英寸 iPad Pro 的应用截图。这些都是我没有的设备。
我是一名优秀的程序员,十分优秀!