سلام دوستان امروز می خواهم به سوال یکی از دوستان پاسخ دهم . یکی از دوستان پرسیده بود که چگونه می توان برنامه نوشت که بتوان سیستم را Restart و یا ShutDown کرد . خوب برای این کار کافیست که با API ها آشنایی داشته باشید , من در آموزش استفاده از Themes WinXp درباره API ها توضیحاتی دادم بد نیست که یه نگاه به اون داشته باشید . از دو تابع که در کتابخانه shell32.dll ویندوز موجود می باشد استفاده میکنیم . از تابع SHRestartSystemMB برای restart کردن و از تابع SHShutDownDialog برای shutDown کردن استفاده می شود . همچنین برای این برنامه دو ثابت تعریف کردم که در اولی عدد معادل برای restart و در دومی کد معادل برای ShutDown کردن قرار دارد .
در برنامه های قبلی هم که با کار کردن با توابع آشنا شدید دیگر فکر نکنم نیازی برای توضیح بیشتر باشه کد برای دریافت این برنامه اینجا کلیک کنید .
'Define Const For Use of API
Const Shut_Down = 1
Const Win_Reboot= 4
'Declare API Concern to Windows Restart
Private Declare Function SHRestartSystemMB Lib "shell32" Alias "#59" (ByVal hOwner As Long, ByVal sExtraPrompt As String, ByVal uFlags As Long) As Long
'Declare API Concern to Windows Shut Down
Private Declare Function SHShutDownDialog Lib "shell32" Alias "#60" (ByVal YourGuess As Long) As Long
Private Sub CmdRestart_Click()
SHRestartSystemMB Me.hwnd, vbNullString, Win_Reboot
End Sub
Private Sub CmdShutdown_Click()
SHShutDownDialog Shut_Down
End Sub
در این برنامه میخوام درباره استفاده از توابع مربوط به زمان و تاریخ بهتون یه چیزایی بگم. برای تفهیم بیشتر این مطالب همه ی این توابع رو در یک مثال کاربردی براتون بیان می کنم که امیدورم براتون مفید واقع بشه .
:: برای دریافت این برنامه اینجا کلیک کنید .
برای این مثال بعد از ایجاد فرم در ویژوال بیسیک چند Label و یک Timer به فرم اضافه کنید , ابتدا با تابع Format شروع می کنیم . این تابع برای فرمت بندی خروجی به کار می رود و ما در اینجا از آن برای فرمت بندی زمان و تاریخ استفاده می کنیم . شکل کلی این تابع بصورت زیر است :
Format(expression[, format[, firstdayofweek[, firstweekofyear]]])
:: برای فرمت بندی زمان و تاریخ در تابع بالا می توان ار فرمت های زیر استفاده کرد :
|
مقادیری پارامتر format | |
| Format |
Description |
| General |
نمایش زمان و تاریخ با هم |
| Long Date | نمایش تاریخ به طور کامل |
| Medium Date | نمایش تاریخ بصورت خلاصه |
| Short Date | نمایش تاریخ |
| Long Time | نمایش زمان بصورت ساعت , دقیقه , ثانیه و AM/PM |
| Medium Time | نمایش زمان بصورت ساعت , دقیقه و ثانیه |
| Short Time | نمایش زمان بصورت ساعت و دقیقه |
به کد زیر توجه کنید و نتایج آنرا در نمای برنامه ببینید :
Private Sub Timer1_Timer()
LblTime.Caption = Format(Now, "long time")
'Not Diffrence With ===> LblTime.Caption = Format(Time, "long time")
LblTime2.Caption = Format(Now, "short time")
'Not Diffrence With ===> LblTime2.Caption = Format(Time, "short time")
LblTime3.Caption = Format(Now, "h:m:s")
'Not Diffrence With ===> LblTime3.Caption = Format(Time, "h:m:s")
LblTime4.Caption = Format(Now, "Medium Time")
'Not Diffrence With ===> LblTime4.Caption = Format(Time, "Medium Time")
LblDate.Caption = Format(Now, "long date")
'Not Diffrence With ===> LblDate.Caption = Format(Date, "long date")
LblDate2.Caption = Format(Now, "short Date")
'Not Diffrence With ===> LblDate2.Caption = Format(Date, "short Date")
LblDate3.Caption = Format(Now, "Medium Date")
'Not Diffrence With ===> LblDate3.Caption = Format(Date, "Medium Date")
LblTimeDate.Caption = Format(Now, General)
LblDay.Caption = Day(Date)
' Not Diffrence With ====> LblDay.Caption = Day(Now)
LblMonth.Caption = Month(Date) & " ( " + MonthName(Month(Date)) + " ) "
' Not Diffrence With ====> LblMonth.Caption = Month(Now) & " ( " + MonthName(Month(Date)) + " ) "
LblYear.Caption = Year(Date)
' Not Diffrence With ====> LblDay.Caption = Year(Now)
LblHour.Caption = Hour(Time)
' Not Diffrence With ====> LblHour.Caption = Hour(Now)
LblMinute.Caption = Minute(Time)
' Not Diffrence With ====> LblMinute.Caption = Minute(Now)
LblSecond.Caption = Second(Time)
' Not Diffrence With ====> LblSecond.Caption = Second(Now)
End Sub

![]()
1. تابع Format : در بالا به این تابع اشاره شد .
2. تایع Day : این تابع بخش روز از یک تاریخ را بر می گرداند و بصورت مقابل به کار می رود :
Day(Date) و یا به اینصورت نیز به کار میرود Day(Now)
3. تابع Month : این تابع بخش ماه را از یک تاریخ بر می گرداند و بصورت مقابل به کار می رود :
Month(Date) و یا به اینصورت نیز به کار میرود Month(Now)
4. تابع Year : این تابع بخش سال از یک تاریخ را بر می گرداند و به صورت مقابل به کار میرود :
Year(Date) و یا به اینصورت نیز به کار میرود Year(Now)
5 . تابع MonthName : این تابع بخش نام ماه را از یک تاریخ بر می گرداند و بصورت مقابل به کار می رود :
MonthName(Date) و یا به اینصورت نیز به کار میرود MonthName(Now)
6. تابع Hour : این تابع بخش ساعت را از یک زمان بر می گرداند و بصورت مقابل به کار می رود :
Hour(Time) و یا به اینصورت نیز به کار میرود Hour(Now)
7. تابع Minute : این تابع بخش دقیقه را از یک زمان بر می گرداند و بصورت مقابل به کار می رود :
Minute(Time) و یا به اینصورت نیز به کار میرود Minute(Now)
8 . تابع Second : این تابع بخش ثانیه را از یک زمان بر می گرداند و بصورت مقابل به کار می رود :
Second(Time) و یا به اینصورت نیز به کار میرود Second(Now)
:: در اینجا می خواهم چندتا تابع دیگه برای کار با تاریخ و زمان بهتون بگم چون فکر مکنم که بکارتون میاد :
![]()
DatePart( interval , Date )
مواردی که می توان برای پارامتر Interval از آنها استفاده کرد به قرار زیر است :
|
مقادیر پارامتر interval | |
| Interval |
Description |
| "d" |
روز |
| "y" | روز از سال |
| "m" | ماه |
| "q" | فصلی از سال |
| "yyyy" | سال |
| "ww" | هفته |
| "w" | روز هفته |
| "s" | ثانیه |
| "n" | دقیقه |
| "h" | ساعت |
فکر کنم با این مثال حساب کار دستون بیاد ( اگر تاریخ جاری 2004/12/20 باشد ) :
DatePart("d" , now) ===============> 20
![]()
TimeSerial ( Hour , Minute , Second )
DateSerial ( Year , Month , Day )
فکر کنم دیگر نیازی به تو ضیح بشتر نباشه .
DateDiff( Interval , Date1 , Date2 )
لازم به ذکر است که مقادیری که پارامتر Interval می پذیرد همان مقادیری است که در جدول بالا برای تابع DatePart به آنها اشاره شد . در زیر با یک مثال کار با این تایع را به پایان می بریم :
DateDiff ( "d" , #20/11/2004# , #20/12/2004# ) ======Output=====> 30
