ايران ويج

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

سلام به همه امروز ارامه تکمیلی آموزش روز قبل رو میخوام براتون بگم که راجع به قسمت [([arglist])] هست که در قسمت قبل به صورت کلی باهاش آشنا شدیم و همچنین به آشنایی با انواع آرگومانها و تشخیص نوع انها خواهیم پرداخت

اما بازم براتون یک تعریف کلی از قسمت [([arglist])] میکنم
برای اینکه راحتتر باشید یه قسمت از مثال آموزش قبل رو اینجا گذاشتم

کد:
[Scope] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]

کد:
[Scope] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] As type

اگه دقت کنید در هر دو API شما این [([arglist])] را میبینید

یادآوری: [] به معنی اون هست که مقدار دادن به این قسمت اختیاری هست و در صورت نیاز نداشتن میتونیم از این گونه قسمت ها
استفاده نکنیم


ما در این قسمت به تابع مقادیر لازم رو برای پردازش کردن میدیم
ببینید تابع مثل یک کارخانه میمونه که پیچ و مهره و لوازم مورد نیاز از یک در وارد میشه و وسیله نهایی که در کارخونه ساخته میشه
از در دیگه اون بیرون میاد
در این روند ما به (که پیچ و مهره و لوازم مورد نیاز) ورودی میگیم که همون arglist هست و به (وسیله نهایی) هم مقدار برگشتی تابع میگیم


از این به بعد ما به قسمت arglist درگاه ورودی API میگیم

اما ما چگونه تشخیص بدیم که داده ورودی ما توی یک API باید چی باشه

به این دو مثال توجه کنید
کد:
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

کد:
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long


اگر دقت کنید میبینید که هر دو تابع ورودی های خاص خودشون رو دارن
ساختار دوتا از اونا رو بررسی میکنیم

کد:
ByVal lpClassName As String

ByRef lParam As Any

در اول دو خط دو کلمه متفاوت ByVal و ByRef رو میبینید که این دو کلمه به شما طریقه فرستادن مقدار به آرگومان شما رو مشخص میکنه که هر کدام به ترتیب مخفف by value و by reference هستند که باز با معانی زیر تعریف میشوند
by value= به وسیله مقدار مقدار دهی شود
by reference=به وسیله مرجع مقدار دهی شود

این نکته هم بگم که وقتی با VB کار میکنیم ویژوال بیسیک به صورت پیشفرض ByRef


قسمت دیگه ای که به ما درشخیص نوع داده ارسالی کمک میکنه String و Any هست

که در اینجا ما با دو نوع رشته ای(String) و نوع متنوع(Any) که میتواند نام دیگر Variant هم باشد سروکار داریم

در نوع رشته ای بدین معنیست که ما بجز داده ای از نوع رشته ای داده دیگری نمیتوانیم ارسال کنیم
در نوع متنوع هم بدین معنیست که ما از هر نوع داده برای این آرگومان میتوانیم استفاده کنیم


یکی دیگر از راه های تشخیص نوع داده ورودی توجه به نام آرگومان تابع هست


که در اینجا lpClassName و lParam هست

اینها انواع مختلفی دارند که باید با تمرین در ذهنتان باقی بماند

مثلا ما با دقت در نام lpClassName و با توجه به قسمت ClassName متوجه این میشویم که این آرگومان نام یک کلاس هست و ما باید از نوع داده String استفاده کنیم اما همیشه با نگاه کردن به نام آرگومان تشخیص نوع آن مقدور نیست

پایان

من مقصودم از گذاشتن این دو آموزش این بود که شما طریقه استفاده از API ها رو درک کنید تا وقتی که با این موارد رو برو میشید بتونید به راحتی طریقه استفاده از Api رو بفهمید


از جلسه بعد به آموزش Api های ویندوز همراه با مثال و توضیح مپردازم و در حین مثالها هم به بررسی نکاتی که احتمالا بدرد بخوره خواهیم پرداخت

سوال و انتقاد همینجا

تا بعدWink
ممنون و خسته نباشيد.واقعا مدتها بود كه توي ايران ويج كسي آموزش نمي گذاشت
سلام
دستتون درد نكنه
كاش اين سري آموزشها ادامه داشته باشه