همش به غیر از آخری واضحه.آخری با هر کدوم از بقیه که ترکیب بشه (با Or ) موجب میشه که ویندوز برنامه ها رو مجبور به بستن کنه.پارامتر دوم رو هم VbNullString قرار بدین
.مثال :
Private Sub Command1_Click()
ExitWindowsEx EWX_SHUTDOWN or EWX_FORCE, VbNULLString
End Sub
توی ویندوز XP این روش کار نمیکنه.برای شات دانون کردن ویندوز باید از فایل ShutDown.Exe که توی دایرکتوری سیستم هست استفاده کرد.این فایل واسه Shut Down کردن چند تا پارامتر میتونه بگیره که یکیش رو حتما باید بش بدین :
-I
یه واسط کاربری نشون میده که توی اون کاربر Options ها رو مشخص میکنه و بعد OK میکنه تا سیستم خاموش بشه و اگه این رو استفاده کردین دیگه نیاز به پارامتر دیکه ای نیست .البته این پارامتر اصلا به کار ما نمیاد.ما میخواهیم به طور اتوماتیک سیستم رو Shut Down کنیم.
-l
سیستم Logoff میشه
-s
سیستم Shutdown میشه.(توی قسمت های قبلی هرجا گفتم Shut Down منظورم Restart , Shutdown , Logoff بود)
-r
سیستم Restart میشه.
-a
اگه سیستم در حال Shut Down شدن باشه ،این کار لغو (abort)میشه.
-t [Seconds]
این برای زمان بکار میره.یعنی اینکه اگه از این پارامتر استفاده کنین باید بعدش یه عدد که معرف ثانیه هستش بنویسین که اگه این کارو بکنین یه پنجره مثل این نشون داده میشه و سیستم بعد از زمانی که شما تعیین کردین Shut Down میشه:
-c "[This is a comment] "
اگه از پارامتر t استفاده کرده باشین با این پارامتر (c) میتونین توی قسمت Message یه پیغام برای کاربر نشون بدین مثل اینی که من گذاشتم (This is a comment) در ضمن طول این پیغام حداکثر باید 127 کاراکتر باشه.
-f
مثل مقدار EWX_FORCE توی تابع ExitWindowsEx عمل میکنه یعنی اگه ازش استفاده کنین ویندوز برنامه ها رو مجبور به بستن میکنه.
حالا ما برای Shut Down کردن باید این فایل رو با پارامتر ها باز کنیم.از تابع Shell استفاده میکنیم :
2 تا دکمه یکی cmdShutDown و یکی دیگه cmdAbort درست کنین :
Private Sub cmdShutDown_Click()
Shell "Shutdown.exe -r –t 30 –f –c " & """" & "This is a comment" & """"
End Sub
Private Sub cmdAbort_Click()
Shell "Shutdown.exe –a"
End Sub
وقتی دکمه cmdShutDown رو بزنین یه پنجره مثل پنجره ای که عکسش رو گذاشتم ظاهر میشه و شمارش معکوس از 30 شروع میشه.اگه به 30 برسه ویندوز رستارت میشه.اگه دکمه cmdAbort رو بزنین پنجره ی Shut Down بسته میشه.
حالا یه کد واسه رستارت در همون لحظه :
Private Sub cmdShutDown_Click()
If MsgBox("Are you sure? ",VbCritical + VbYesNo) = VbYes Then
Shell "ShutDown.exe –r –f –t 0"
End If
End Sub