C # ImageMagick.NET рабочий стол сравнивает на Windows 8 и Win 10 - PullRequest
0 голосов
/ 29 октября 2018

Что я пытаюсь сделать: Создать базовый образ приложения в развернутом состоянии (например, notepad.exe). Затем создайте изображение на лету, выполнив максимизированный notepad.exe на экране рабочего стола, и с помощью imagemagick сравните изображения. Мне нужно создать неизмененные изображения, чтобы увидеть, правильно ли рендерится приложение в развернутом состоянии, поэтому допуски не помогут.

Что мне удалось сделать - это автоматически скрыть APPBAR, затем скрыть панель инструментов (чтобы не показывать автоматически скрытые тени от APPBAR на снимке), затем открыть приложение и развернуть его, сделать снимок всего рабочего стола. Для Windows 7 это работает отлично. В Windows 8 и Win10 происходит следующее: на снимке развернутого приложения «Блокнот» последние 2 строки изображения будут несовместимыми, см. Изображения.
Это приводит к тому, что мое изображение сравнивается, чтобы всегда показывать разницу. Как устранить нечетные неровности внизу экранов Win8 и Win10?
Screen shot of Windows 8 with max notepad, autohidden appbar and taskbar.hide()

The Diff shows the inconsistent bottom few rows of pixels

Autohide: Как переключить / переключить панель задач Windows с «показать» на «автоматическое скрытие» (и наоборот)?

чтобы скрыть: открытый класс панели задач {

        public Taskbar()
        {
            // hide ctor
        }

        [DllImport("user32.dll")]
        private static extern int FindWindow(string className, string windowText);

        [DllImport("user32.dll")]
        private static extern int ShowWindow(int hwnd, int command);

        [DllImport("user32.dll")]
        public static extern int FindWindowEx(int parentHandle, int childAfter, string className, int windowTitle);

        [DllImport("user32.dll")]
        private static extern int GetDesktopWindow();

        private const int SW_HIDE = 0;
        private const int SW_SHOW = 1;

        protected static int Handle
        {
            get
            {
                return FindWindow("Shell_TrayWnd", "");
            }
        }

        protected static int HandleOfStartButton
        {
            get
            {
                int handleOfDesktop = GetDesktopWindow();
                int handleOfStartButton = FindWindowEx(handleOfDesktop, 0, "button", 0);
                return handleOfStartButton;
            }
        }

        public bool Show()
        {
            ShowWindow(Handle, SW_SHOW);
            ShowWindow(HandleOfStartButton, SW_SHOW);
            return true;
        }

        public bool Hide()
        {
            ShowWindow(Handle, SW_HIDE);
            ShowWindow(HandleOfStartButton, SW_HIDE);
            return true;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...