我正在为秒屏幕开发一个任务栏,但无法使这个东西起作用..
当我在秒屏幕上最小化应用程序时,它将向主屏幕显示最小化动画(vista& 7 aero)。我想要做的是在秒屏幕上将动画显示到我自己的任务栏。我知道这是可能的,因为Displayfusion和Acual Multi Monitor也有此功能。因此,经过一些研究后,我发现您可以使用SetWindowPlacement API设置最小化位置。但是,我无法让这个工作。该窗口仍将显示主屏幕的最小化动画。
这是我到目前为止所尝试的:首先使用ITaskbarList DeleteTab方法隐藏第二个屏幕上窗口的任务栏按钮。然后我使用此函数来设置最小化位置并最小化窗口:
public void ShowHideAnimated(IntPtr Handle, Boolean show)
{
WINDOWPLACEMENT wp = new WINDOWPLACEMENT();
GetWindowPlacement(Handle, out wp);
wp.length = Marshal.SizeOf(typeof(WINDOWPLACEMENT));
wp.flags = WPF_SETMINPOSITION;
wp.ptMinPosition.X = -500; //(-500,200) is a point on the second screen
wp.ptMinPosition.Y = 200;
if (!SetWindowPlacement(Handle, ref wp))
{
Debug.WriteLine( Marshal.GetLastWin32Error() );
}
if(!show)
{
ShowWindowAsync(Handle, SW_MINIMIZE);
}
else
{
ShowWindowAsync(Handle, SW_RESTORE);
}
}