۰۷-مهر-۱۳۸۵, ۰۲:۳۶:۵۲
سلام به همه بروبکس ایرانویج
امروز اولین روزی هست که من دارم شروع به آموزش کلی API های ویندوز میکنم در حین این آموزشها اگر سوالی یا اشکالی در آموزش دیدید در تاپیک اعلام کنید
ممکنه که حتی 99% از شما با این مباحث آشنا باشید ولی شاید بازم برای بعضی ها مفید باشه پس اگه مباحث خیلی ابتدایی بود به خوبی خودتون ببخشید
اما امروز میخوام برای روشن شدن کلی کار ابتدا به توضیح برخی از مباحث در مورد چگونگی کارکرد ویندوزدر مورد API ها بپردازم
API ها یا(Application Program Interface) در برنامه نویسی ویژوال بیسیک بسیار زیادندو کاربردهای فراوانی در ارتباط با برنامه نویسی دارند
API درواقع به معنی رابط برنامه کاربردی هست و همونطور که از نامش معلومه با استفاده از اون میتونیم از دستورالعملهایی که در برنامههای دیگر قرار دارند از طریق این رابط استفاده کنیم
اما اون رابطها معمولا از کدام برنامه ها فراخونی میشن: معمولا فایلهایی با پسوند DLL ویا OCX و یا بندرت Exe دارای این رابطها یا همون API ها هستند که ما در اینجا فقط با نوع DLL سرو کار داریم
این رو هم اضافه کنم که خود DLL یا dynamic-link library مانند یک کتابخانه است که انواع رویه ها(Functionها و Sub ها) در اون قرار داره و وقتی که ما از دستورالعمل یا فراخوانی API حرف میزنیم منظور همون فراخونی Functionها و Sub ها هست
وقتی که میگوییم فایل Sore.dll دارای API های تعریف شده هست بدین معناست که ما از طریق این فایل و با فراخونی یکی از API های تعریف شده در اون یک دستورالعمل رو در برنامه خودمون اجرا میکنیم
اما ویژوال بیسیک چگونه این ارتباط رو برقرار میکنه
ما با تعریف اون توسط دستور اصلیDeclare میتونیم این کار رو به راحتی انجام بدیم
به مدلهای زیر توجه کنید:
ما توسط این خط میتونیم یک Procedure که از نوع SUB هست رو فراخونی کنیم
به توضیح خط میپردازیم
قسمت اول [Scope] که به معنی محدوده هست که میتونه دو مقدار رو بپزیره یکی Private یا اختصاصی و Public یا عمومی که بدین معنا هستند که API ما در چه محدوده ای تعریف بشه
قسمت دوم Declare یا همون دستور کلی تعریف ما هست
قسمت سوم Sub به ما میگه که این تابع مقداری رو برنمیگردونه بعبارت دیگر میتونه ورودی داده داشته باشه ولی خروجی نداره
قسمت چهارم name که همون نام تابع در فایل مورد نظر هست
نکته: هر قسمت که در یک [] قرار دارد انتخابی هست(Optional) یعنی اگر نوشته نشود حالت پیشفرض بصورت خودکار جایگزین میشود
قسمت پنجم Lib "libname" که نام کتابخانه رو مشخص میکنه
قسمت ششم [Alias "aliasname"] این هم نام مستعار برای اون رویه هست
قسمت هفتم [([arglist])] که میشه گفت یکی از قسمتای مهم هست در مورد ورودی های تابع هست و نشان دهنده این است که چه آرگومانهایی به APi میتوانیم بدهیم
اما با تمام این مباحث بعدآ با مثالهای متعدد بیشتر آشنا میشیم
در اینجا هم فقط قسمت های جدید رو آموزش میدم
Function که نشان دهنده اینه که تابع ما مقدار برگشتی داره و بعد از فراخونی مقداری رو برمیگردونه
اما اگر به قسمت آخر As type توجه کنید متوجه مورد قبلی و همان خصوصیت Function بودن این تابع میشید
این هم چندتا مثال در این موارد
اول چندا APi که رویه اونا از نوع Function هست
اینم چندتا APi که رویه اونا از نوع Sub هست
سوال و انتقاد همینجا
تا بعد
امروز اولین روزی هست که من دارم شروع به آموزش کلی API های ویندوز میکنم در حین این آموزشها اگر سوالی یا اشکالی در آموزش دیدید در تاپیک اعلام کنید
ممکنه که حتی 99% از شما با این مباحث آشنا باشید ولی شاید بازم برای بعضی ها مفید باشه پس اگه مباحث خیلی ابتدایی بود به خوبی خودتون ببخشید
اما امروز میخوام برای روشن شدن کلی کار ابتدا به توضیح برخی از مباحث در مورد چگونگی کارکرد ویندوزدر مورد API ها بپردازم
API ها یا(Application Program Interface) در برنامه نویسی ویژوال بیسیک بسیار زیادندو کاربردهای فراوانی در ارتباط با برنامه نویسی دارند
API درواقع به معنی رابط برنامه کاربردی هست و همونطور که از نامش معلومه با استفاده از اون میتونیم از دستورالعملهایی که در برنامههای دیگر قرار دارند از طریق این رابط استفاده کنیم
اما اون رابطها معمولا از کدام برنامه ها فراخونی میشن: معمولا فایلهایی با پسوند DLL ویا OCX و یا بندرت Exe دارای این رابطها یا همون API ها هستند که ما در اینجا فقط با نوع DLL سرو کار داریم
این رو هم اضافه کنم که خود DLL یا dynamic-link library مانند یک کتابخانه است که انواع رویه ها(Functionها و Sub ها) در اون قرار داره و وقتی که ما از دستورالعمل یا فراخوانی API حرف میزنیم منظور همون فراخونی Functionها و Sub ها هست
وقتی که میگوییم فایل Sore.dll دارای API های تعریف شده هست بدین معناست که ما از طریق این فایل و با فراخونی یکی از API های تعریف شده در اون یک دستورالعمل رو در برنامه خودمون اجرا میکنیم
اما ویژوال بیسیک چگونه این ارتباط رو برقرار میکنه
ما با تعریف اون توسط دستور اصلیDeclare میتونیم این کار رو به راحتی انجام بدیم
به مدلهای زیر توجه کنید:
کد:
[Scope] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]
ما توسط این خط میتونیم یک Procedure که از نوع SUB هست رو فراخونی کنیم
به توضیح خط میپردازیم
قسمت اول [Scope] که به معنی محدوده هست که میتونه دو مقدار رو بپزیره یکی Private یا اختصاصی و Public یا عمومی که بدین معنا هستند که API ما در چه محدوده ای تعریف بشه
قسمت دوم Declare یا همون دستور کلی تعریف ما هست
قسمت سوم Sub به ما میگه که این تابع مقداری رو برنمیگردونه بعبارت دیگر میتونه ورودی داده داشته باشه ولی خروجی نداره
قسمت چهارم name که همون نام تابع در فایل مورد نظر هست
نکته: هر قسمت که در یک [] قرار دارد انتخابی هست(Optional) یعنی اگر نوشته نشود حالت پیشفرض بصورت خودکار جایگزین میشود
قسمت پنجم Lib "libname" که نام کتابخانه رو مشخص میکنه
قسمت ششم [Alias "aliasname"] این هم نام مستعار برای اون رویه هست
قسمت هفتم [([arglist])] که میشه گفت یکی از قسمتای مهم هست در مورد ورودی های تابع هست و نشان دهنده این است که چه آرگومانهایی به APi میتوانیم بدهیم
اما با تمام این مباحث بعدآ با مثالهای متعدد بیشتر آشنا میشیم
کد:
[Scope] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] As type
در اینجا هم فقط قسمت های جدید رو آموزش میدم
Function که نشان دهنده اینه که تابع ما مقدار برگشتی داره و بعد از فراخونی مقداری رو برمیگردونه
اما اگر به قسمت آخر As type توجه کنید متوجه مورد قبلی و همان خصوصیت Function بودن این تابع میشید
این هم چندتا مثال در این موارد
اول چندا APi که رویه اونا از نوع Function هست
کد:
[code]Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
کد:
Private Declare Function EnumDesktops Lib "user32.dll" Alias "EnumDesktopsA" (ByVal hwinsta As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
کد:
Private Declare Function InSendMessage Lib "user32.dll" () As Long
کد:
Private Declare Function SetCursor Lib "user32.dll" (ByVal hCursor As Long) As Long[/code]
اینم چندتا APi که رویه اونا از نوع Sub هست
کد:
[code]Private Declare Sub DllInstall Lib "browseui.dll" (ByVal bInstall As Long, ByVal pszCmdLine As String)
کد:
Private Declare Sub ExitThread Lib "kernel32.dll" (ByVal dwExitCode As Long)
کد:
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)[/code]
تا بعد