1

初始化放大 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);
    }
4

0 回答 0