تبليغاتX
Iranian Technology
 
آموزش برنامه نویسی
 
 
آموزش ویژوال بیسیک و ... برای دیدن تمامی مطالب به آرشیو ماهانه مراجعه کنید
 

کاربرد توابع RtlFillMemory و RtlZeroMemory :

توابع RtlFillMemory و RtlZeroMemory از جمله توابع کتابخانه Kernel32 هستند.کاربرد توابع به این صورت است:
فکر کنید شما بخواهید یک داده را از کاربر دریافت کنید که در محدوده خاصی باشد حال اگر کاربر داده ای غیر مجاز وارد کند برنامه شما دچار خطا میشود و شما برای مقابله با خطا و رفع اشکال آن باید کدهای طولانی بنویسید. اما با استفاده از این توابع که به زبان Visual C نوشته شده اند شما می توانید به آسانی با خطا مقابله کنید.
علاوه بر اینها شما با کمک این توابع میتوانید از طریق برنامه ای که خودتان می سازید برنامه های دیگر را کنترل کنید.فکرش رو کنید تمامی برنامه ها تحت فرمان شما باشد!!!!

مثال: یک پروژه جدید از نوع استاندارد باز کنید.حالا روی فرم خود ۳ عدد برچسب(Label) با نامهای Label1 , Label2 , Label3 قرار دهید. سپس از منوی View گزینه Code را بزنید تا پنجره کدها باز شود. حالا کدهای زیر رو در پنجره کدها بنویسید:

Private Declare Sub RtlFillMemory Lib "Kernel32.dll"(Destantion As Any , ByVal Length as Long , ByVal Fill As Byte) 'X

Private Declare Sub RtlZeroMemory Lib "Kernel32.dll"(Destantion as Any,Byval Length as Long) 'x

Private sub Form_Load

Dim TX As String

TX = String(15 , "T") 'x
Label1.Caption = "Line1 :" & TX

RtlFillMemory Byval TX , Len(TX),Asc("X") 'x
Label2.Caption = "Line2 :" & TX

RtlZeroMemory Byval TX , Len(TX) 'x
Label3.Caption = "Line3 :" & TX

End Sub

همون طور که در قطعه کدها می بینید خط ۱و۲ برای فراخوانی توابع API هستند. در خط ۴ یک متغیر رشته ای به نام TX تعریف کردیم . در خط ۵ با استفاده از تابع String (که یکی از توابع داخلی ویژوال بیسیک هست) ۱۵ بار حرف X را در متغیر TX قرار دادیم. در خط ۶ برچسب اول مغادیر متغیر رو نمایش میدهد. در خط ۷ با استفاده از تابع RtlFillMemory مقادیر ذخیره شده در متغیر TX را عوض کردیم . در خط ۸ مقادیر جدید متغیر TX را نمایش دادیم . در خط ۹ با استفاده از تابع RtlZeroMemory متغیر TX را برابر ۰ کردیم یعنی مقادیر آن را حذف کردیم.در خط بعدنیز مقدار متغیر TX را به نمایش گداشتیم.


انجام اعمالی از جمله ShutDown , LogOff , Reboot , ... :
برای انجام چنین کارهایی باید از تابع ExitWindowEx استفاده کنید که از جمله توابع کتابخانه ای User32 هست. برای اینکه طرز کار این تابع رو بفهمین به مثال زیر توجه کنید:

قبل از مثال شکل کلی تابع و ثابت های اون رو براتون میزارم.

Private Declare Function ExitWindowsEx Lib "User32.dll"(byval uFlags as Long , ByVal dwReseved as Long) As Long

Private Const EW_LOGOFF = 0
Private Const EW_SHUTDOWN = 1
Private Const EW_REBOOT = 2
Private Const EW_CLOSEALLWINDOWS = 4

مثال: اول از همه یک پروژه جدید از نوع استاندارد باز کنید سپس روی فرم خود چهار عدد دکمه فرمان(CommandButton) با نامهای Command1 , Command2 , Command3 , Command4 قرار بدید. حالا خاصیت Caption دکمه فرمان اول(Command1) را برابر LogOff قرار بدید . خاصیت Caption دکمه فرمان دوم رو هم برابر ShutDown کنید همچنین دکمه فرمان سوم رو هم برابر Reboot و دکمه فرمان چهارم هم Close All Windows قرار بدهید. خوب حالا پنجره کدها رو باز کنید.(برای این کار از منوی View گزینه Code رو بزنید)
سپس کدهای زیر رو در پنجره کدها بنویسید:

Private Declare Function ExitWindowsEx Lib "User32.dll"(byval uFlags as Long , ByVal dwReseved As Long)As Long

Private Const EW_LOGOFF = 0
Private Const EW_SHUTDOWN = 1
Private Const EW_REBOOT = 2
Private Const EW_CLOSEALLWINDOWS = 4

Private Sub Command1_Click
ExitWindowsEx EW_LOGOFF , 0
End Sub

Private Sub Command2_Click
ExitWindowsEx EW_SHUTDOWN , 0
End Sub

Private Sub Command3_Click
ExitWindowsEx EW_REBOOT , 0
End Sub

Private Sub Command4_Click
ExitWindowsEx EW_CLOSEALLWINDOWS , 0
End Sub

خوب دیگه حالا برنامتون رو اجرا کنید.
واقعیتآ من وقت نکردم روی رایانه خودم امتحانشون کنم اگه مشکلی داشت حتما به من بگین ها!


مخفی کردن نوار TaskBar ویندوز:

ابتدا یک پروژه جدید از نوع استاندارد باز کنید سپس دو عدد دکمه فرمان(CommandButton) با نامهای Command1 و Command2 روی فرم قرار دهید خاصیت Caption دکمه فرمان Command1 را برابر Show و خاصیت Caption دکمه فرمان Command2 را برابر Hide قرار دهید. سپس در پنجره کدها قطعه کد زیر رو بنویسید:

Private Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA"(byVal lpClassName As String , Byval lpCaption as String)As Long

Private Declare Function SetWindowPos Lib "User32.dll"(ByVal shWnd As Long , ByVal MainhWnd As Long,ByVal X as Long , Byval Y as Long, ByVal CX as Long, ByVal CY as Long , ByVal uFlags As Long)As Long

Private Sub Command1_Click

Dim Temp As Long
Temp = FindWindow("Shell_Traywnd" , "") 'X
Call SetWindowPos (Temp , 0 , 0 , 0 , 0 , 0 , &H40) 'x

End Sub

Private Sub Command2_Click

Dim Temp As Long
Temp = FindWindow("Shell_Traywnd", "" ) 'x
Call SetWindowPos (Temp ,0 ,0 ,0 ,0, 0, &H80) 'x

End Sub

حالا برنامه رو اجرا کنید و بعد از زدن دکمه فرمان ها فیض ببرید!!


بی معرفتی نکنی ها حتمآ نظر بده.

 |+| نوشته شده در  سه شنبه سیزدهم شهریور 1386ساعت 11:29  توسط علی  | 
 
  بالا  

Free Counter