سؤال

عند إخفاء شريط المهام على نظام التشغيل Vista و Windows 7، لا يتم إخفاء زر البدء (المعروف أيضا باسم بدء تشغيل ORB). لقد كنت أبحث عن حل لهذا ووجدت واحدة ولكن يبدو أكثر تعقيدا من اللازم. هذه CodeProject المادة يصف (وتحتوي على رمز) محلول حيث تقوم بتعداد جميع النوافذ الفرعية لجميع مؤشرات الترابطات التي تحتوي على قائمة ابدأ.

هل وجد أي شخص حل أبسط؟

فقط للرجوع اليها. رمز إخفاء شريط المهام (دون إخفاء الجرم السماوي) هو كما يلي. أولا القيام الواردات والإعلانات اللازمة Win32.

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string className, string windowText);

[DllImport("user32.dll")]
private static extern int ShowWindow(IntPtr hwnd, int command);


private const int SW_HIDE = 0;
private const int SW_SHOW = 1;

ثم، في طريقة في مكان ما، اتصل بها بالحجج الصحيحة

IntPtr hwndTaskBar = FindWindow("Shell_TrayWnd", "");
ShowWindow(this.hwndTaskBar, SW_HIDE);
هل كانت مفيدة؟

المحلول

كنت قادرا على وضع حل لم يكن يتطلب جميع تعداد الخيوط. وهنا الأجزاء ذات الصلة.

إذا كنت تعلن FindWindowEx كالآتي

[DllImport("user32.dll")]
private static extern IntPtr FindWindowEx(
       IntPtr parentHwnd,
       IntPtr childAfterHwnd,
       IntPtr className,
       string windowText);

يمكنك بعد ذلك الوصول إلى مقبض النافذة لبدء تشغيل ORB مثل هذا:

IntPtr hwndOrb = FindWindowEx(IntPtr.Zero, IntPtr.Zero, (IntPtr)0xC017, null);

وتعطيل بدء الجرم السماوي مثل هذا:

ShowWindow(hwndOrb, SW_HIDE);

مفتاح هذه الطريقة هو أننا نستخدم IntPtr اكتب متغير ClassName بدلا من سلسلة في FindWindowEx وظيفة. هذا يسمح لنا باستخدام جزء من هذه الوظيفة التي تأخذ ATOM نوع بدلا من string. وبعد كنت قادرا على تمييز ذلك ATOM للاستخدام هو في 0xC017 من هذا المنشور:إخفاء ويندوز فيستا

نأمل أن يساعد هذا الإصدار المبسط بعض الأشخاص.

تحديث: قمت بإنشاء هذا الجديد صفحة مشروع الرمز لتوثيق هذه العملية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top