السلام عليكم ورحمة الله وبركاته ,
الحقيقه ان فيه ناس كتير بتسأل عن كيفية عمل Shutdown , و Restart والحاجات دي والردود دائما تكون عن طريق استخدام API , وتكون طرق طويله وغلسه وبما ان انا عدو الـ API وعدو الطرق الغلسه :lol: , فكرت في طريقه جميله جدا وفعاله , وفكرتها ببساطه تقوم على انشاء ملف Batch ووضعه في الـ System حتى لا يراه المستخدم ثم تشغيه اثناء الـ Run Time , وهذا مثال ::
string ShutDownBatch = System.Environment.GetFolderPath(System.Environment.SpecialFolder.System)+@"\shutdown.bat"; StreamWriter mysw = new StreamWriter(ShutDownBatch); mysw.Write(@"shutdown /p"); mysw.Flush(); mysw.Close();
قمنا في الكود السابق بانشاء ملف Batch باسم shutdown.bat , وكتبنا بداخله shutdown /p
وما علينا الآن هو فقط تشغيل هذا الملف لكى يتم تنفيذ مابداخله ليقوم بعمل الـ ShutDown ,و لتشغيله اكتب هذا الكود بداخل نفس السكوب :
Process myp = new Process(); myp.StartInfo.FileName = ShutDownBatch; myp.Start(); myp.Close();
قد تتسائل عن هذا الأمر الذي قمنا بكتابته ( shutdown /p ) داخل ملف الباتش !! , من اين عرفته ؟؟
أشكر الأخ ( محمد عبد المجيد ) << متخصص في الـ Network , وهو الذي أخبرني بهذا الأمر ومن ثم جائتني فكرة عمل هذا الكود الذي يغنينا عن الـ API .
ولمزيد من المعلومات حول استخدام الـ shutdown , اذهب الى Run واكتب Cmd , وبعدين اكتب shutdown \i , وحينها ستعرف كيف يتم استعماله وستكتشف ايضا انه يمكن استبدال الـ ( p/ ) باشياء أخرى تمكنك من عمل Restart و Hibernate واغلاق جميع البرامج المفتوحه .... الخ B)
ملحوظه :: الكود شغال %100 على Windows Server 2003 , واذا كنت ترغب في جعله يعمل على Windows XP , قم بتغيير ( shutdown /p ) الى ( shutdown -s -t 0 ) لعمل shutdown او الى ( shutdown -r -t 0 ) لعمل Restart , ولكني لم أجربه بعد على XP.
اما بالنسبه لـ Windows 98 , فان هذه الطريقه لا تعمل عليه اطلاقا , ولكن يوجد طريقه أخرى ولكني لم أجربها ايضا اطلاقا وهى القيام بفتح الـ ( RUNDLL.EXE ) وتمرير user.exe,exitwindows , مثال ::
للـ Shutdown ::
rundll.exe user.exe,exitwindows
للـ Restart ::
rundll.exe user.exe,exitwindowsexec
ملحوظه على الكود :: متنساش تستخدم using System.IO و System.Diagnostics
أرجو ان المشاركه تكون أفادت.
