پیش از این برای انجام بسیاری از کارها در برنامه نویسی ناچار به استفاده از APIهای Windows بودیم. به عنوان مثال برای باز کردن یک فایل pdf. با استفاده از ShellExecute میبایست کد زیر را در VB 6 وارد میکردیم:
Private Declare Function Ex Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub Form_Load() Ex Me.hwnd, "open", "C:\MyFile.pdf", vbNullString, vbNullString, 1 End Sub
اما در VB.NET میتوان بدون استفاده از API برای باز کردن همین فایل از کد زیر استفاده کرد:
بررسی کد VB.NET:
System.Diagnostics یک Namespace شامل کلاسهایی برای ارتباط با پروسسهای سیستم میباشد. کلاس Process از این Namespace ما را قادر به کنترل پروسسهای سیستم مینماید. متد Start از این کلاس، فایل مورد نظر ما را با توجه به پروسس مربوطه باز میکند.
البته در VB.NET هم میتوان از API استفاده کرد که در این صورت کد آن به صورت زیر خواهد بود:
Declare Auto Function Ex Lib "shell32.dll" Alias "ShellExecute" (ByVal hwnd As
System.IntPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal
lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As
Long
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Ex(Me.Handle, "open", "C:\MyFile.pdf", vbNullString, vbNullString, 1)
End Sub
مقایسه:
با اولین نگاه سادگی و سر راستی کد VB.NET مشخص میشود ولی مهمتر اینکه، نباید فراموش کرد با استفاده از APIها در حقیقت از کد مدیریت نشده (Unmanaged Code) استفاده کردهایم که خود، عدم استفاده از امکانات Managed Code را در برنامه سبب میشود. برای اطلاعات بیشتر در زمینه فوائد Managed Code به MSDN مراجعه کنید. به این ترتیب میتوان کلاسهای NET Framework. را به عنوان جایگزینی مناسب برای بسیاری از توابع API استفاده کرد. ولی به هر حال در برخی موارد هنوز ناچار به استفاده از APIها میباشیم.
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن