问题标签 [screenshot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3007 浏览

windows - 哪些 Windows (C++) 屏幕捕获库符合我的要求?

我准备外包我们应用程序的屏幕捕获功能,因为这不是我们的核心业务,而且我花了太多时间试图让我们的代码完成我需要的所有事情。我想是时候找专家了。我的要求按重要性降序排列如下。是否有人对满足大部分或所有这些要求的任何商业或免费图书馆有经验?

  1. 必须在 Windows XP 及更高版本中工作。(但不是 Win95/98/Me。)

  2. Visual C++ 2005 兼容,可以从我的代码中触发屏幕截图。最好是静态库,但 DLL 或 COM 对象也可以。我不希望使用独立的 EXE,因为有些用户会尝试篡改我们的应用程序,我认为拥有一个明显的单独屏幕截图 EXE 会使这变得太容易了。

  3. 必须能够截取多个监视器系统的完整屏幕截图。(最好是“打印屏幕”键在 Windows 中的方式,通过制作拼接在一起的显示位图,但如果我必须单独拍摄照片并自己组合它们,这是可以接受的。)

  4. 当远程桌面客户端(或任何 RDP 客户端或 VM)处于全屏模式时,必须能够正确捕获屏幕。(当然,当 RDP 处于窗口模式时它也应该工作,但只要它不通过模拟可能被传输到远程操作系统而不是在本地处理的按键来操作,这应该不是问题。 )

  5. 当 Windows Media Player(或任何其他媒体播放器)处于全屏模式时,必须能够正确捕获屏幕。

  6. 当游戏(例如魔兽世界)处于全屏模式时必须能够正确捕获屏幕。

  7. 能够将几秒钟的用户活动捕获为视频会很高兴。

0 投票
2 回答
357 浏览

c# - 防止在 Windows 中出现 UAC 提示后热键丢失

背景

  • 我用 C# 编写了一个注册 Windows 热键的应用程序(当我按下 PRINTSCREEN 时它会截屏)
  • 我注册热键、捕获屏幕等的代码都可以工作。那里没有问题。

问题

  • 如果我的应用程序正在运行(并且成功注册了热键),然后我做了一些导致 UAC 提示的事情 - 通常这是在例如我启动一些安装程序时引起的 - 那么热键就会丢失。Lost = 之后,当我点击 printscreen 时,该事件永远不会回到我的应用程序中。我必须关闭应用程序并重新启动。

问题

  • 为什么热键丢失了?
  • 注册热键时,我可以和应该做些什么不同的事情?

笔记

  • 我已经在其他注册热键的应用程序中看到了这种行为 - 使用管理员权限使用热键运行应用程序可以防止热键丢失
  • 注册热键时,我可以和应该做些什么不同的事情?
  • 避免像 setup.exes 这样导致 UAC 提示的应用程序不是一个可行的解决方案 - 我截取屏幕截图的全部目的是记录多个应用程序的设置体验
  • 我有一个解决方法,我可以使用管理员权限启动应用程序 - 但我宁愿避免让用户这样做

代码

我的代码与此非常相似:http: //www.codekeep.net/snippets/ea68475b-c33e-4a71-8008-90f63d7e918d.aspx

0 投票
3 回答
31010 浏览

c# - 如何在没有 NativeMethods 的情况下找到给定 hWnd 的窗口的位置/位置?

我目前正在使用 WatiN,并发现它是一个很棒的网页浏览自动化工具。但是,截至上一个版本,它的屏幕捕获功能似乎有所欠缺。除了Charles Petzold 的一些代码之外,我还提出了一个可行的解决方案,用于从屏幕上捕获屏幕截图(独立生成类似于此 StackOverflow 问题的代码) 。不幸的是,缺少一个组件:实际的窗口在哪里

WatiN 方便地为hWnd您提供浏览器,因此我们可以(通过这个简化的示例)设置为从屏幕复制图像,如下所示:

成功!我们得到了屏幕截图,但有一个问题:总是指向屏幕的最左上角,而不是我们要从中复制的窗口的位置 hWndXhWndY

然后我调查了Control.FromHandle,但这似乎只适用于您创建的表单;如果您将 传递给该方法,则此方法将返回一个空指针hWnd

然后,进一步阅读导致我切换搜索条件......当大多数人真正想要窗口的“位置”时,我一直在搜索“窗口位置”。这导致另一个 SO question谈到了这一点,但他们的答案是使用本机方法。

那么,只有给定 hWnd (最好只有 .NET 2.0 时代的库),是否有一种本地 C# 方法来查找窗口的位置?

0 投票
2 回答
1669 浏览

c# - Vista和Win7游戏时的空白屏幕截图

我注意到另一个人也在这方面寻求帮助。我看了那个帖子,好像还没有解决。我还尝试将我的代码更改为“单击 2 次屏幕截图”帖子中的代码,但由于某种原因,在我的代码中实现该代码会与我的所有其他代码混淆。

目前,屏幕截图在 Win XP 中完美显示。然而,在 Vista 和 Win7 中,除非在窗口模式下玩游戏,否则它们会显示为空白。我希望有人可以帮助我们,因为这是完成我们程序的最后一步,如果没有解决这个问题,我们将无法完成。

我用于屏幕截图的 C# 代码如下。

0 投票
4 回答
5819 浏览

c# - Windows服务下进程截图

我们必须从 Windows 服务运行一个进程并从中获取屏幕截图。

我们尝试了 BitBlt 和 PrintWindow Win32 调用,但都给出了空白(黑色)位图。

如果我们从普通用户进程运行我们的代码,它就可以正常工作。

这甚至是可能的吗?或者有没有其他方法可以尝试?

我们尝试过的事情:

  1. Windows 服务作为本地系统运行,以本地系统运行进程 -> 屏幕截图失败
  2. 以管理员身份运行的 Windows 服务,以管理员身份运行进程 -> 屏幕截图失败。
  3. 以用户 XYZ 身份运行的 Windows 应用程序以 XYZ 身份运行进程 -> 屏幕截图适用于 BitBlt 或 PrintWindow。
  4. 尝试从本地系统检查“允许服务与桌面交互”

我们还注意到 PrintWindow 更适合我们的情况,如果窗口位于另一个窗口后面,它就可以工作。

对于其他要求,父进程和子进程必须在同一用户下。我们不能真正使用从一个进程到另一个进程的模拟。

0 投票
2 回答
1905 浏览

javascript - 使用 Flash 或 javascript 从浏览器获取快照

我在这里看到一个线程建议使用 HPA 截取浏览器屏幕截图,但我想知道您是否可以帮助我。我希望能够选择网页的一部分并将其呈现为图像。我知道 flex 可以拍摄它自己的画布的图像,但是可以拍摄页面其余部分的照片吗?

我希望能够只用 flash 和 javascript 来完成它,而无需插件。我意识到我可能是在寻求魔法,所以谢谢你的帮助。

0 投票
3 回答
2733 浏览

selenium - 如果用户未登录,是否有办法在计划任务期间截取屏幕截图?

我有一个计划任务,每晚凌晨 3:30 运行一组 Selenium 测试。如果测试失败,这些测试还会截取屏幕截图并将该屏幕截图通过电子邮件发送给开发团队。但是,我遇到的问题是屏幕截图仅在我登录到运行测试的虚拟机(Windows Server 2003)时才有效。如果没有人登录,则屏幕截图为黑色。

有没有简单的方法来解决这个问题?

谢谢!

-标记

0 投票
8 回答
8843 浏览

java - 我怎样才能对网站进行全屏截图

我需要通过 URL 获取网站的全屏截图,是否有任何 PHP 程序或服务,如果没有,是否有任何 Java 程序用于此目的?

0 投票
6 回答
51957 浏览

java - 用 Java 截取网页的屏幕截图

是否有免费工具可以读取给定网页并对其进行截图?

0 投票
1 回答
1036 浏览

winapi - 用于制作 Windows Vista 和 7 半透明屏幕截图的 Windows API

激活 Aero 时,Windows Vista 和 Windows 7 显示半透明表单。一些截屏应用程序(例如 WinSnap 或Windows Clippings)能够将这些窗口捕获为半透明的 PNG 图像。他们使用什么 Windows API 来获得如此精美的捕捉?