问题标签 [magnification-api]
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.
winapi - 为什么我的捕获窗口代码不起作用?
我是winapi的新手。我在codeproject看到了一个捕获桌面的例子,不包括一些窗口
有一个子窗口被创建并被捕获。
我想创建一个父窗口,而不是创建一个子窗口。
我已经尝试过使用此代码。
一个带有黑屏的新窗口可见。即使我单击捕获按钮,窗口也会卡住。
为什么会发生这种情况以及如何使用新的父窗口使其工作?
谢谢
java - 32 位 JRE 中的 jna 指针
我正在使用 jna 在 Java 中调用放大 api 函数。
MagImageScalingCallback.java
MAGIMAGEHEADER.java
放大.java
WinGDIExtra.java
我的代码
如果调用该函数,MagSetWindowSource
则调用该MagImageScalingCallback
函数。
问题是如果我使用 jre7(64 位)运行此代码,一切正常。但是如果我在 jre7(32 位)中运行相同的代码,我会收到以下错误。
如何解决这个问题?如何在 32 位 JRE 上完成这项工作?谢谢!
javascript - Magnific PopUp 不适用于动态添加的元素
我们正在使用 Magnific 库在我们的站点中显示弹出窗口。除了一件事,一切都进展顺利。
当我们动态添加元素时,弹出窗口不适用于动态添加的元素。你能帮我如何绑定动态添加元素的点击事件以显示弹出窗口吗?这是我的代码如下:
}
该类负责显示弹出窗口,但它不适用于动态添加的元素。
换句话说,click 事件没有在 DOM 中注册新添加的元素。
c++ - 放大率低于 125% 默认 Win API(101 - 124% 之间)
我正在研究 Windows 放大 api,我一直在使用它,但我对放大默认值有疑问,Windows 只允许您在最低时增加 25%。我有可能一次增加 1-5% 吗?鼠标滚动进出可能会增加百分之一?
Windows 最低 25% 默认][1]
提前感谢你的帮助。
成功集 == 假;当它不是 1.1 时,任何更低的东西都会失败,我意识到 1.1 = 125% 缩放。
delphi - 放大 api:与实际尺寸不成比例的屏幕截图
我有以下代码,在没有基于此示例的主窗体的情况下,它可以很好地进行屏幕捕获。
我的问题是结果屏幕截图在右侧被剪切并在左侧扩展,例如测试此代码以在打开 SO 网站的情况下捕获整个桌面:
如您所见,垂直滚动条可以在两侧(左侧和右侧)看到。
我怎样才能解决这个问题?
这是完整的示例:
放大倍率
delphi - 为什么 MagSetImageScalingCallback 函数在新桌面执行时会失败?
我正在尝试使用Magnification api创建一个新桌面的屏幕截图( CreateDesktop
api + 执行explorer.exe到新桌面),如本教程中所示。我成功地将教程中的 C++ 代码移植到 Delphi 中,当从Win Vista ~ Win 10执行并启用Aero 主题时,这两个示例(C++ 和 Delphi)都可以正常工作。
这个问题的麻烦是因为如果我创建一个新桌面(克隆原始桌面)并执行这个屏幕截图示例,则会MagSetImageScalingCallback
失败。
有人知道MagSetImageScalingCallback的可能解决方案也适用于创建的新桌面吗?
提前感谢任何帮助。
放大倍率
版:
GetLastError()
返回50 - ERROR_NOT_SUPPORTED -不支持请求。
但这适用于原始桌面,我不明白。
visual-c++ - 基于 Windows 放大 API 的屏幕捕获在 Windows 7 64 位禁用 Aero 主题时失败
我正在尝试使用基于https://www.codeproject.com/Articles/607288/Screenshot-using-the-Magnification-library?msg=5570528#xx5570528xx中给出的代码示例的 Windows 放大 API 捕获桌面屏幕。
该程序(32 位可执行文件)在 Windows8 和 Windows10 上运行良好,但在 Windows7 操作系统上失败。我将程序编译为 64 位,即使对于上述代码项目线程中提到的示例程序,其行为也是相同的。
调试后,我发现MagImageScalingCallback函数将图像宽度和高度返回为 4*4 而不是显示器的大小,这会导致程序在 Windows7 机器上崩溃或捕获空白屏幕(参考:https ://docs.microsoft.com /en-us/windows/desktop/api/magnification/ns-magnification-tagmagimageheader)。
所有 API 调用(MagInitialize、CreateWindow、MagSetWindowFilterList和MagSetWindowSource)均成功。在初始化创建、设置桌面区域和分配过滤器列表方面,代码流中没有 API 调用失败或错误。
DWM(航空主题)已关闭(根据参考:https ://docs.microsoft.com/en-us/windows/desktop/api/magnification/nf-magnification-magsetimagescalingcallback )
即使在研究了大约 3 天后,我也找不到与该主题相关的任何资源。我必须使用放大 API,因为我需要捕获留在桌面上其他窗口之后的窗口。
任何帮助,将不胜感激。
更新1:
我发现应用程序只有在启用 Aero 主题时才能捕获屏幕,这与https://docs.microsoft.com/en-us/windows/desktop/api/magnification/nf-magnification中的声明相矛盾-magsetimagescalingcallback。
我不确定如何使其在默认禁用 Aero 主题或不可用的操作系统上运行。
c - 放大 API:重绘期间闪烁
我通过稍微修改 Microsoft 提供的Magnification API 示例创建了一个应用程序,以实现对在放大镜窗口中捕获和显示的每个帧的自定义转换。
我用 将MagSetImageScalingCallback
my 函数设置为回调。调用回调没有问题,并且可以轻松地操作源图像和目标图像,因为原始位作为指针(srcdata 和 destdata)传递给回调。
使用设置为 16 ms (~60Hz) 的计时器刷新窗口。使用InvalidateRect
API 调用刷新。问题是当放大镜窗口出现闪烁时。这种情况尤其发生在开始菜单出现时,如果启用“Peek”或每次在前台有一个具有动态内容的窗口时。
我试图拦截WM_ERASEBKGND并InvalidateRect
使用 FALSE 作为第三个参数调用,但这没有帮助。我试图UpdateWindow
在无效之前添加一个调用,但没有任何改变。
Windows 10 附带的放大镜应用程序没有同样的问题。我想知道为什么会发生这种情况以及如何摆脱闪烁。
为了重现问题,请从上面的链接下载 Magnification API 示例,然后将文件MagnifierSample.cpp中的内容替换为以下源代码:
请注意,我添加了设置回调的代码
然后我创建了这个回调:
该Sleep
语句“模拟”了我的自定义转换所花费的时间。
如果您使用 Edge 打开 youtube 视频,然后运行MagnifierSample.exe可执行文件,您应该会看到一个黑屏闪烁,当屏幕闪烁时,您应该看到放大镜窗口后面的内容(黑屏)。这正是我的应用程序中正在发生的事情。睡眠值设置为 20,但我不知道回调实际需要多长时间。我只是猜测它可能需要超过 16 毫秒。
要重现该问题,请执行以下步骤:
- 手动运行 MagnifierSample.exe(不要使用调试器运行它)
- 您应该会看到黑屏
- 按窗口键
- 在前台设置一个带有视频或动态内容的窗口
- 点击黑色窗口让任务栏消失
- 您应该看到屏幕有时会闪烁
是否可以设置类似于MagSetImageScalingCallback
普通窗口句柄的回调?我知道我可以使用 WindowProc 回调来拦截发送到窗口的消息但是我无权访问 rawbits,除非我使用CreateDIBSection
,SelectObject
等等......但当时图像已经发送到目标窗口,我没有机会改造它。
c# - C# 放大 API 全屏句柄
初始化放大 API 并调用“MagSetFullscreenColorEffect”方法时,屏幕会自动更改颜色以匹配您调用的任何数组。这需要相对较少的代码:
这立即使屏幕变为负数,这意味着 Magnification API 已经在创建全屏点击窗口。我想知道如何获取此窗口的句柄,并引用它以将颜色更改为新数组(IE,“NotNegative”)
下面的代码演示了我在哪里尝试使用“GetForeGroundWindow”命令来捕获放大 API HWND,然后尝试使用“MagSetColorEffect”方法更改该窗口的颜色。这没有成功。问题:
- 如何找到 Magnification API 正在使用的句柄?
- Windows API 何时创建此句柄/窗口?在初始化期间,还是在 magsetfullscreen 方法中?
- 为什么下面的代码不改变我的窗口颜色?
注意:我知道我可以使用 MagnificationSetFullscreen 再次更改颜色。我也知道我可以创建自己的放大窗口,如放大 API 概述中所示。不过,我很懒,想用窗口好像API已经在创建了。
c# - 在 Windows 10 放大镜工具“背后”抓取屏幕像素数据
我想知道当 Windows 放大镜工具在全屏模式下运行时是否可以捕获整个屏幕视图。本质上,我正在寻找的是当我用眼睛看屏幕上的某个点时,只有屏幕上的某个点显示在我的显示器上,我希望能够打印整个屏幕没有关闭放大镜的原始屏幕。不知道如何比这更好,更清楚地表达它。我知道可以通过Graphics
类获取屏幕像素信息,如下所示:
但这并不排除放大镜对屏幕的影响,只是在用户看到的时候抓取它。理想情况下,我希望能够抓住整个屏幕,因为如果放大镜工具不是仅放大一部分,则应该可以看到它,如果这有意义的话。整个屏幕空间,即使只有一部分可见。
我快速浏览了Magnification API文档页面,但我不知道这是否真的是我应该看的地方。还有什么我可以做的吗?如果有人指出我正确的方向,我将不胜感激,因为我似乎在绕圈子。
非常感谢!