在Windows 7中,是否有可能保留屏幕边缘附近的屏幕区域用于您的应用程序?它将类似于Windows任务栏(即最大化的窗口不会与其重叠)。
我正在编写一个具有对多个监视器的正确支持的任务栏应用程序。其主要目的是在每个屏幕上显示仅包含该屏幕上的应用程序的任务栏。我所知道的所有现有解决方案(Ulltramon,DisplayFusion)都不适用于Win 7,并且没有开源解决方案。
如果能提供C#代码那就更好了,但也欢迎任何提示。
我觉得自己回答自己的问题有点傻,但感谢迈克尔的提示,我找到了一个合适的C#代码示例。
using System;
using System.Runtime.InteropServices;
public class WorkArea
{
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint="SystemParametersInfoA")]
private static extern Int32 SystemParametersInfo(Int32 uAction, Int32 uParam, IntPtr lpvParam, Int32 fuWinIni);
private const Int32 SPI_SETWORKAREA = 47;
public WorkArea(Int32 Left,Int32 Right,Int32 Top,Int32 Bottom)
{
_WorkArea.Left = Left;
_WorkArea.Top = Top;
_WorkArea.Bottom = Bottom;
_WorkArea.Right = Right;
}
public struct RECT
{
public Int32 Left;
public Int32 Right;
public Int32 Top;
public Int32 Bottom;
}
private RECT _WorkArea;
public void SetWorkingArea()
{
IntPtr ptr = IntPtr.Zero;
ptr = Marshal.AllocHGlobal(Marshal.SizeOf(_WorkArea));
Marshal.StructureToPtr(_WorkArea,ptr,false);
int i = SystemParametersInfo(SPI_SETWORKAREA,0,ptr,0);
}
}