امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش ش2 پیش نیاز2 (بخش API)
نویسنده پیام
Pedram_HookEx آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 459
موضوع‌ها: 23
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 1
( 109 تشکر در 65 ارسال )
ارسال: #1
آموزش ش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

_______________________________________________________________________________
  • کشف الکتریسیته توسط پارتها برای اولین بار کلیک کنید
  • 135 نکته و آموزش از سطح پایین تا پیشرفته در غالب مثال های کوچک و قابل فهم (حجم 97KB)لینک دانلود
  • 101 آموزش پیشرفته ویژوال بیسیک. حتما دانلود کنید(حجم 314KB)لینک دانلود
  • اینم یه کتابچه ویژوال بیسیک برا اونایی که میخوان برنامه نویسی رو شروع کنن(حجم 916KB)لینک دانلود
  • تمام نکات و ترفند های مهم در ویندوز XP حتما دانلود کنید(حجم 86KB)لینک دانلود[تصویر:  new4.gif]
  • بروزرسانی ویژوال بیسک 6 به آخرین نسخه یعنی سرویس پک 6 (حجم 61MB)لینک دانلود[تصویر:  new4.gif]

۰۸-مهر-۱۳۸۵, ۲۰:۱۶:۴۰
ارسال‌ها
پاسخ
تشکر شده توسط : m_vb66, mojtabamalaekeh, Darg, Kadilak
shamsoft آفلاین
كاربر دو ستاره
**

ارسال‌ها: 152
موضوع‌ها: 32
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 0
( 7 تشکر در 6 ارسال )
ارسال: #2
RE: آموزش ش2 پیش نیاز2 (بخش API)
ممنون و خسته نباشيد.واقعا مدتها بود كه توي ايران ويج كسي آموزش نمي گذاشت
۰۸-مهر-۱۳۸۵, ۲۳:۳۰:۱۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak
alaska آفلاین
عضو افتخاری
****

ارسال‌ها: 591
موضوع‌ها: 65
تاریخ عضویت: دى ۱۳۸۶

تشکرها : 3841
( 2520 تشکر در 474 ارسال )
ارسال: #3
RE: آموزش ش2 پیش نیاز2 (بخش API)
سلام
دستتون درد نكنه
كاش اين سري آموزشها ادامه داشته باشه

فکر کن آنگاه سخن بگو تا از لغزش و خطا مصون باشی .
امیرمومنان علی (ع)
۰۸-بهمن-۱۳۸۶, ۱۶:۵۹:۰۱
ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS