السلام عليكم ورحمة الله وبركاته
لا اعرف اذا طرحت الفكرة من قبل في هذا المنتدى لكن بالنسبة لي الفكرة جديدة جدا
بعد جهد جهيد عرفت كيف استطيع تشغيل برنامجي قبل ما يشتغل ال explorer (يعني قبل ظهور شريط المهام و اليقونات وقبل ما تشتغل البرامج الي في ال startup)
و هكذا اجتني الفكرة:
كان قبل اسبوع في مشكلة في جهازي وكانت المشكلة كالتالي كان ال explorer يعلق وما يشتغل الا عندما اقوم بعمل end task له ثم اعادة تشغيله وفي الزمانات كان في كود vb طرح من قبل المبرمج احمد يقوم بتشغيل البرنامج مع ال explorer لكي يشتغل البرنامج في الوضع الامن
وكان الكود يقوم بالتالي
يقوم باضافة اسم البرنامج في المفتاح الخاص في تشغيل الexplorer
وهذا هو عنوان المفتاح
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
وكان اسم القيمة Shell
وكانت تحتوي على اسم البرنامج المراد تشغيله عند الدخول للوندوز
Explorer.exe
وهو اسم البرنامج الذي نريده ان يعمل عند اول الدخول للوندوز
وكنا اذا غيرنا القيمة الى مسار برنامجنا الذي نريد يشتغل البرنامج تمام وما يشتغل ال Explorer وهذا هو المطلوب ان يشتغل البرنامج قبل ال Explorer لكن المشكلة كانت انه لو اغلقنا البرنامج (الي اشتغل بدل ال Explorer) ما كان يشتغل ال Explorer وكنا نضل عالقين ما نقدر نسوي شيء لا نرى الا الخلفية
فكان يجب علينا ان نضع مسار البرنامج بعد الExplorer.exe يعني بصير الداخل القيمة هكذا:
Explorer.exe c:\waleed.exe
لكن هذه الطريقة كانت بتشغل البرنامج وال Explorer يعني ما ستفدنا الا انو هذي الطريقة كانت بتشغل البرنامج في الوضع الامن Safe mode عند بدا التشغيل وكما نعرف جميعا ان الوضع الامن لا يقوم بتشغيل اي برنامج عند بدا التشغيل الا البرامج التي يحتاجها
والحمد لله لقد خطرت في بالي فكرة وهي ان نقوم باستخدام الطريقة الاولى (نقوم باستبدال داخل القيمة بمسار البرنامج)
ونقوم بكتابة كود في البرنامج وعمله كال تالي:
عندما نقوم باغلاق البرنامج يقوم البرنامج بتشغيل ال Explorer.exe
لكن يا فرحة ما تمت :(
كان يشتغل ال Explorer بالطريقة الاخرى وهو له طريقتان للعمل
الاولى وهي ان يقوم باظهار (شريط المهام والايقونات) وان يقوم بتشغيل البرامج في بدا التشغيل
والثانية ان يقوم بفتح نافذة وعن طريق هذه النافذة نقوم باستكشاف الملفات لتجربة هذه الطريقة اذهب الى start ثم run ثم اكتب Explorer.exe
وسوف ترى النافذة
فاخذت افكر وافكر مع العلم ان الطريقة الاولى يجب تعمل اذا كان( شريط المهام والايقونات) غير ظاهرين يعني روح لل task manager ثم processes ثم ابحث عن Explorer.exe واعمل end task له سوف يختفي ( شريط المهام والايقونات) ثم اذهب الى قائمة file في ال task manager ثم الى new task run ثم اكتب Explorer.exe سوف ترى انه اشتغل بالطريقة الاولى .
فهذا محير لماذا لا يشتغل الExplorer بالطريقة الاولى؟؟
ولكن الحمد لله لقد اكتشفت الحل وهو انه يجب علينا ارجاع حذف اسم برنامجنا من القيمة وارجاع Explorer.exe وبصراحة لم افهم لماذا (واذا كان احدكم يعرف لماذا فل يخبرنا)
وبعد ارجاع القيمة الى Explorer.exe واغلاق البرنامج سوف يفتح الExplorer بالطريقة الثانية
الان ندخل ب تطبيق الفكرة عمليا (كود)
سوف نضع كود لنقوم بتغيير القيمة
(ضع الكود في زر او في حدث التحميل كما تشاء)
Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows NT\CurrentVersion\Winlogon", True)
key.SetValue("Shell", Application.ExecutablePath)وفي هذا الكود قمنا بتعريق المتغير key على انه مفتاخ بالريجستري وحددنا مسار المفتاح
وقمنا بعديها بتغيير الذي بداخل القيمة shell الى مسار برنامجنا
وسوف نضع هذا الكود في الحدث FormClosing
Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows NT\CurrentVersion\Winlogon", True)
key.SetValue("Shell", "Explorer.exe")
Shell("C:\WINDOWS\explorer.exe")وهو نفس الكود السابق لكنه يقوم بتغيير القيمة الى ال Explorer.exe
وبعديها بشغل ال Explorer.exe
عن طريق الدالة Shell
جرب الكود وإن شاء الله راح يشتغل
وانا جاهز لاي استفسار وارجو تصحيح اي خطاء لدي وشكرا ;)
