初始化放大 API 并调用“MagSetFullscreenColorEffect”方法时,屏幕会自动更改颜色以匹配您调用的任何数组。这需要相对较少的代码:
InitializeComponent();
if (!NativeMethods.MagInitialize())
{
NativeMethods.MagInitialize();
}
NativeMethods.MagSetFullscreenColorEffect(Negative);
这立即使屏幕变为负数,这意味着 Magnification API 已经在创建全屏点击窗口。我想知道如何获取此窗口的句柄,并引用它以将颜色更改为新数组(IE,“NotNegative”)
下面的代码演示了我在哪里尝试使用“GetForeGroundWindow”命令来捕获放大 API HWND,然后尝试使用“MagSetColorEffect”方法更改该窗口的颜色。这没有成功。问题:
- 如何找到 Magnification API 正在使用的句柄?
- Windows API 何时创建此句柄/窗口?在初始化期间,还是在 magsetfullscreen 方法中?
- 为什么下面的代码不改变我的窗口颜色?
注意:我知道我可以使用 MagnificationSetFullscreen 再次更改颜色。我也知道我可以创建自己的放大窗口,如放大 API 概述中所示。不过,我很懒,想用窗口好像API已经在创建了。
public MainWindow()
{
InitializeComponent();
if (!NativeMethods.MagInitialize())
{
NativeMethods.MagInitialize();
}
Negative = new float[] {
-1.0f, 0.0f, 0.0f, 0.0f, 0.0f ,
0.0f, -1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, -1.0f, 0.0f, 0.0f ,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f ,
1.0f, 1.0f, 1.0f, 0.0f, 1.0f};
NotNegative = new float[] {
0.0f, 0.0f, 0.3f, 0.0f, 0.0f ,
0.0f, 0.0f, 0.6f, 0.0f, 0.0f,
0.0f, 0.0f, 0.1f, 0.0f, 0.0f ,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f ,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
//NativeMethods.MagSetFullscreenColorEffect(Negative);
hwndMag = NativeMethods.GetForegroundWindow();
NativeMethods.MagSetColorEffect(hwndMag, NotNegative);
NativeMethods.ShowWindow(hwndMag, 3);
}