ايران ويج

نسخه‌ی کامل: آموزش ش1 پیش نیاز 1 (مبحث API)
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام به همه بروبکس ایرانویج

امروز اولین روزی هست که من دارم شروع به آموزش کلی 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]
سوال و انتقاد همینجا

تا بعدWink

نه سوال نه انتقاد
منتظر مقاله هاي بعدي هستيم
پدرام جان سلام
ببین مطالبی در مورد توابع wave مثل waveInAddBuffer داری.
خیلی ممنون می شم
بای
فک کنم داشته باشم اما اگه اشکال نداشته باشه اول مبحث استفاده از API رو تموم کنم بعد بریم سراغ آموزش خود API ها با مثال
سلام
مرسی ولی اگه می شه زودتر بذاریدنیاز دارم
مرسی
بای
سهیل جان میخوای چکار کنی

بهم بگو میخوای برای چه کاری چون این API کاربردای زیادی داره اینجوری بهتر میتونم کمکت کنم
سلام
من در حقیقت برای رسم اسیلوسکوپ می خوام . برای ویرایش صدا .
زودتر بگی ممنونBiggrin
بای
سهیل جان این یه مثال هست که از سایت AllApi آوردم و فک کنم که خیلی بدردت بخوره

فقط یه چیز دیگه هم که هست من شرمندت شدم که نتونستم برات آموزشش رو بزارم آخه این Api کارش یه جوری هست که اگه من تنها بخوام برای این API آموزش بزارم نمیشه و خودش به تنهایی با 10 20 تا API دیگه درگیر هست

به توضیحاتش نگاه کن تا بهتر متوجه طرز عمل این برنامه بشی راستی برنامتو خط به خط اجرا کن
مرسی دستت درد نکنه
من یه ذره کا دارم هنوز نتونستم برم دنبالش گفتم یه زحمتی بدمBiggrin
مرسی
بسيار عالي
دستتون درد نكنه
به نظرم اگه این آموزش ها رو توی FAPI بذاریم خیلی عالی می شه نه؟