الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

إخفاء سطح المكتب لنظام التشغيل ومرفقاته

مغلق
بدأه TarekNajem04 في 4 ديسمبر 2005 · 4 رد · 609 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

في برنامج مؤقت الإنترنت الذي سوف نقوم بنشره هنا إن شاء الله راودني فكرة بأن أقوم بقفل سطح المكتب لكي لا يقوم أحد بالعبث فأول شئ قمت به هو إنشاء سطح مكتب جديد ولكن سرعان ما وجدت أن هذه العملية فاشلة نوعاً ما لأن الماسنجرات تقوم بوضع رموزها على System Tray مما أعاق عمل برنامجي فكيف سوف يصل المستخدم إلى تلك الرموز وهو في سطح مكتب جدد فلتجأ لحيلة إخفاء سطح المكتب وهذا الموضوع منقول عن العديد من المقالات التي قمت بقرائتها ولكن قمت بكتابته هنا لتعم الفائدة على الجميع.

في هذا الموضوع سوف نتعرف عن كيفية إخفاء سطح المكتب ومرفقاته

لإخفاء أي نافذه يجب علينا معرفة الـ Handle الذي قام النظام بإسناه له حين عملية إنشاء تلك النافذة ولكننا هنا لا نعرف ماهو الـ Handle لسطح المكتب فكيف ذلك إذا في وظائف النظام هناك وظيفة تقوم بالبحث عن النافذة عن طريق الاسم أو عن طريق الـ ClassName ( هو عبارة عن أسم يقوم المبرمج بإعطائة لنافذة ويمكن أن يتشارك مجموعة من النوافذ في نفس الاسم وهناك مجموعة من هذه الأسماء معرفة مسبقاً داخل نظام التشغيل لإستزاده راجع الـ MSDN لأنه موضع طويل ليس بصدده الأن) والوظيفه هي FindWindow ولكن سوف نسأل ثانية من أين سوف نأتي بأسم سطح المكتب أو الـ ClassName هناك أداة جميلة تأتي مع MicrosoftSDK أسمها SPY تساعدنا بمعرفة متطلباتنا.

1- قم بتشغيل البرنامج SPY وقم بالضغط على Find أو Alt+F3

04_12_05_06_54_23_1133708063Spy.JPG

2- ستضهر لك هذه النافذة قم بالضغط مكان الصورة وأسحب الفارة حيث وجود الكنترول وفي مثالنا هذا قم بالتأشير على مكان تواجد ساعة النظام ثم أضغط على OK

04_12_05_06_56_59_1133708219Find.JPG

3- سوف ينقلك إلى الصفحة الرئيسية للبرنامج أحفظ الأسم مكان الدائرة الصفراء الظاهر في الصورة

04_12_05_07_04_36_1133708676ClassName.JPG

4- أضغط مكان على مفتاح الإنتر أو قم بضغط مرتين على أسم الكنترو (المكان الذي قام البرنامج بتحديده تلقائياً واضح في الصورة السابقة) ثم أحصل على رقم معرف الكنترول وهذه هي الخطوة الأخيرة

04_12_05_07_08_52_1133708932ControID.JPG

نقوم بتنفيذ الخطوت السابقة على جميع العناصر التي نريد إخفائه أما بالنسبة لنوافذ الرئيسة نستثني البند الرابع

وضائف النظام التي سوف نستخدمها هنا

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr FindWindow(
            [MarshalAs(UnmanagedType.LPTStr)]
            string lpClassName,
            [MarshalAs(UnmanagedType.LPTStr)]
            string lpWindowName);


        // ShowWindow nCmdShow Constant
        public const int SW_HIDE = 0;
        public const int SW_SHOWNORMAL = 1;
        public const int SW_SHOWMINIMIZED = 2;
        public const int SW_SHOWMAXIMIZED = 3;
        public const int SW_SHOWNOACTIVATE = 4;
        public const int SW_SHOW = 5;
        public const int SW_MINIMIZE = 6;
        public const int SW_SHOWMINNOACTIVE = 7;
        public const int SW_SHOWNA = 8;
        public const int SW_RESTORE = 9;
        public const int SW_SHOWDEFAULT = 10;

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

        [DllImport("User32.dll")]
        public static extern IntPtr GetDesktopWindow();

        [DllImport("User32.dll")]
        public static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);

لأخفاء سطح المكتب نكتب

            //مهمة الوظيفة أن تقوم بإحضار الـ Handle عن طرق الأسم (خاصية  لـ Text وليس أسم المتحول)
            // أو الـ ClassName الذي تحدثنا عنه سابقأ وهنا وضعنا الـ ClassName ومررنا null لـ الأسم

            IntPtr hwnd_DesktopWindow = FindWindow("Progman", null);
            ShowWindow(hwnd_DesktopWindow, HideDesktopWindowCheckBox.Checked ? SW_HIDE : SW_SHOW);

لإخفاء System Tray نكتب

            //نقوم بإحضار مقبض النافذة الأب 
            IntPtr hwnd_TaskBar = FindWindow("Shell_TrayWnd", null);
            // مهمة هذه الوضيفة إحضار أي كونترل موضوعة على النافذة لذلك مرره لها مقبض النافذة الرشيسة
            // هنا لـ System Tray هو TaskBar
            //قمنا بوضع الرقم الذي حصلنا علية في الخطوات السابقة لعملية البحث
            IntPtr hwnd_SystemTray = GetDlgItem(hwnd_TaskBar, 0x12F);
            ShowWindow(hwnd_SystemTray, HideSystemTrayCheckBox.Checked ? SW_HIDE : SW_SHOW);

مع المرفقات مثال كامل أتمنى أن نكون قد وصلنا لما نريد

لأي سؤال أو أستفسار أسئل ولا تتردد

إثنان لا يتعلمان جاهلً خجول وجاهل متكبر

أذا واجهة مشلكل في قرائة التعليق أنسخ على برنامج الورد.

WindowsDesktop.rar

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#2

اخي طارق بما انك خبير في التعامل مع نظام التشغيل برمجيا

طرخ منذ فترة سوال في المنتدي ولم يرد عليه احد وهو ؟؟

ازيا اعلم برنامج بحيث يمنع اي برنامج تاني يفتح بحيث يشتغل مع بداية تشغيل الويندوز واوا ما الويندوز يشتغل يملي الشاشة كلها وميعرفش يفتح اي رنامج تاني او حتي يتصفح الكميسوتر ؟؟

فكيف يتم ذلك وجزاك الله خيرا

#3

كان لي مشاركة أسميتها >>>قريباً على هذا المنتدى<<<< إن شاء الله حين أقوم بتحميل البرنامج سوف تجد حل مشكلتك فبرنامجنا في بدأ الإقلا ع يفعل ما تفكر فيه

/index.php?showtopic=82425

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#5

وإياكم أخي الكريم

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…