Зарезервировать область экрана в Windows 7 - PullRequest
5 голосов
/ 08 мая 2009

Возможно ли зарезервировать область экрана у края экрана для вашего приложения в Windows 7? Он будет вести себя подобно панели задач Windows (т.е. развернутые окна не будут перекрываться с ним).

Я пишу приложение для панели задач с соответствующей поддержкой нескольких мониторов. Основная цель - показать панель задач на каждом экране, содержащую только приложения на этом экране. Ни одно из существующих решений ( Ulltramon , DisplayFusion ) мне не известно о работе для Win 7, и ни одно из них не имеет открытого источника.

C # код был бы хорош, но любые подсказки также приветствуются.

Ответы [ 2 ]

5 голосов
/ 08 мая 2009

Я чувствую себя глупо, отвечая на свой вопрос, но благодаря подсказке Майкла я нашел подходящий 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);
  }
}
3 голосов
/ 08 мая 2009

Я не уверен, как это сделать напрямую в C #, но в нативном коде вы можете вызывать SystemParametersInfo с помощью SPI_SETWORKAREA. Вот как приложения, такие как панель задач, боковая панель и т. Д., Могут предотвращать перекрытие развернутых окон.

http://msdn.microsoft.com/en-us/library/ms724947.aspx - документация для SystemParametersInfo.

http://social.msdn.microsoft.com/forums/en-US/winforms/thread/9fe831e5-ccfb-4e8d-a129-68c301c83acb/ показывает P / Invoke подписи для этого метода.

...