سؤال

هل من الممكن حجز مساحة الشاشة بالقرب من حافة الشاشة عن تطبيقك في ويندوز 7؟ فإنه يتصرف على غرار شريط مهام Windows (أن أي ويندوز إلى أقصى حد لا تتداخل معها).

وأنا أكتب التطبيق شريط المهام مع الدعم المناسب لأجهزة عرض متعددة. والغرض الرئيسي هو لإظهار شريط المهام على كل شاشة تحتوي فقط على تطبيقات على هذه الشاشة. أيا من الحلول القائمة ( Ulltramon و <لأ href = "http://www.binaryfortress.com / displayfusion / "يختلط =" noreferrer "> DisplayFusion ) وأنا أعلم من العمل لوين 7، وأيا مفتوحة المصدر.

سوف

وC # رمز يكون لطيفا، ولكن هي موضع تقدير أي تلميحات كذلك.

هل كانت مفيدة؟

المحلول

وأنا غير متأكد من كيفية القيام بذلك مباشرة في 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 / التوقيعات استدعاء لهذا الأسلوب.

نصائح أخرى

وأشعر سخيفة الرد على سؤالي الخاص، ولكن بفضل تلميح مايكل، لقد وجدت من المناسب <وأ href = "http://www.google.com/search؟hl=en&q=SPI_SETWORKAREA+C٪23&btnG=Google+ بحث وعبد القدير = و وOQ = "يختلط =" noreferrer "> 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);
  }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top