Что я пытаюсь сделать: Создать базовый образ приложения в развернутом состоянии (например, notepad.exe). Затем создайте изображение на лету, выполнив максимизированный notepad.exe на экране рабочего стола, и с помощью imagemagick сравните изображения. Мне нужно создать неизмененные изображения, чтобы увидеть, правильно ли рендерится приложение в развернутом состоянии, поэтому допуски не помогут.
Что мне удалось сделать - это автоматически скрыть APPBAR, затем скрыть панель инструментов (чтобы не показывать автоматически скрытые тени от APPBAR на снимке), затем открыть приложение и развернуть его, сделать снимок всего рабочего стола.
Для Windows 7 это работает отлично. В Windows 8 и Win10 происходит следующее: на снимке развернутого приложения «Блокнот» последние 2 строки изображения будут несовместимыми, см. Изображения.
Это приводит к тому, что мое изображение сравнивается, чтобы всегда показывать разницу. Как устранить нечетные неровности внизу экранов Win8 и Win10?
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;
}
}
}