اول از همه سلام عرض می کنم خدمت همه دوستان
همون طور که گفته بودم آموزش API رو شروع می کنیم
دوست عزیز Aftab110 چرا فکر کردی که به کمک شما نیاز نیست ؟ به کمک همه نیاز هست. هیچ کس کامل نیست . با این که سعی کردم مطلب رو خیلی روان بنویسم شاید جاهایی از مطلب مشکل داشته باشه !
به کمک همه نیاز هست و هدف فقط موفقیته و هرکسی که می تونه کمک کنه دریغ نکنه. از آقا سعید هم به خاطر توضیحاتشون تشکر می کنم.
از غلط هایه املایی که دارم معذرت می خوام
حالا بهتره دیگه شروع کنیم
API چیست ؟
API مخفف Application Programming InterFace که یعنی رابط برنامه سازی کاربردی.
API به توابعی گفته می شود که در فایلهای مختلف ویندوز مانند Advapi32.dll ، User32.dll ، Ole32.dll ، Kernel32.dll ، Winmm.dll .... وجود داره و ویندوز برای صدها کار مختلف خود از این تابع ها استفاده می کنه برنامه های کاربردی نیز به طور متعدد از این توابع استفاده میکنند. برای مثال خود ویژوال بیسیک از توابع API استفاده می کنه !! مثلا وقتی که شما دستور Pritn "Hiden Soft" رو درویژوال بیسیک استفاده میکنید ویژوال بیسیک از تابع TextOut برای نمایش پیغام مورد نظر استفاده میکنه .
پس متوجه شدید که توابع API توسط خود مایکرو سافت در یک سری فایل ها قرار گرفته که شما میتوانید در برنامه هایتان از این توابع استفاده کنید. اشتباه نکیند یه وقت این فایل ها OpenSource نیستند و یه وقت حوس نکنید با برنامه های دی باگر دست به تغییر اون ها بزنید (البته عواقب اون پای خودتونه)
حالا چند تا سوال پیش میاد
1- API که خود ویندوز ازاون استفاده میکنه با چه زبانی نوشته شده ؟
2- توابع API چن تا هستند ؟
3- توابع API چه ورودی هایی دارند ؟
4- آیا باید وقتی از API استفده کردیم فایل های اون رو هم کنار برنامه قرار بدیم ؟
5- API چه نوع سیستم عامل هایی رو پشتیبانی می کنه ؟
6- استفاده از API چه فایده ای داره؟
جواب سوالات
1- API توسط زبان برنامه نویسی قدرت مند C نوشته شده و در اکثر زبان های برنامه نویسی ویژوال کاربرد دارد.
2- API به 2 دسته تقسیم میشه که عبارتند از 16 بیتی و 32 بیتی تقسیم می شوند که توابع 16 بیتی به تعداد بیش 700 تابع و توابع 32 بیتی به بیش 6000 تابع می رسند
3- API هم همانند توبع خود ویژوال بیسیک از ورودی های عددی و رشته ای استفاده می کنه که البته شما این ورودی ها رو در متغیر ها باید قرار بدهید و به غیر از متغیر ها باید از یک سری ثابت ها استفاده کنید که در اکثر توابع حداقل 1 ثابت وجود داره . توجه داشته باشید که اکثر اوقات شما این متغیر ها رو با ثابت ها مقدار دهی می کنید.
4- خیر - این فایل ها در تمام سیستم عامل های ویندوز وجود دارد و نیازی به ارائه فایل ها در نسخه برنامه ندارید.
5- توابع API ویندوز 95 تا XP رو پوشش می دن
6- اگر شما از توابع API استفاده کنید بجای اینکه خودتون مثل توابع رو بنویسید در هنگام غلط گیری کردن برنامه کمتر دچار مشکل می شید یعنی وقتی از این توابع استفاده می کنید استفاده می کنید اطمینان دارید که تابع کار خودش رو درست انجام می ده نیازی غلط گیری تابع ندارید و اگر از API استفاده کنید لازم نیست تابع رو بنویسید و فقط کافیه یه بار تابع رو معرفی کنید و سپس به تابع ورودی بدید و خروجی مورد نظر رو دریافت کنید یا عمل مورد نظر رو انجام بدید. وقتی شما از تابع Print استفاده می کنید ویژوال بیسیک از تابع(API) TextOut استفاده میکنه و شما نمیتونید از تمام گذینه های تابع TextOut استفاده کنید ولی با API مسقیما شما تابع رو صدا می زنید و از تمام Option یا گذینه های اون استفاده می کنید. به غیر از تمام این ها API یک سری تابع داره که شما هیچ وقت نمیتونید این توابع رو بنویسید مثلا تابعی برای شفاف کردن فرم یا شی دیگه ای (مثل ویندوز Vista).
دوستان عزیز از API می شه در زبان برنامه نویسی Delphi و VB.Net هم استفاده کرد ولی از اونجا که من نه Delphi بلدم نه VB.Net پس از همه اونایی که API رو برای این دوتا زبان لازم دارن معزرت می خوام چون من VB بلدم و تقریبا تخصص من این زبان هست.
API In Visual Basic
تعریف توابع API به کمک دستور Declare انجام میشه که باید تعیین کنید که این تابع اختصاصی (Private) هست یا عمومی (Public) . شکل کلی اون به این صورته
[(Public | Private ] Declare sub name lib "libname" [Alias "aliasname"][(arglist]
[Public | Private ] Declare Function name lib "libname" [Alias "aliasname"][(arglist)] [As type]
حالا تمام قسمت هاشو توضیح میدم
Private یا Public : این دو دستور جهت تعریف محدوده کار تابع می باشد که اگر شما Private یا خصوصی رو انتخاب کنید بهتر هستش که کد این تابع رو درون خود فرم بنویسید و اگر Public یا خصوصی رو انتخاب کردید بهتره که کد اون تابع رو در یک Madule تعریف کنید تا تصیح آن ساده تر شود
Declare : این دستور تابع موجود در یک فایل API را تعریف می کند.
sub : توابعی که به این صورت تعریف شوند مقدار برگشتی ندارند.
Function : توابعی که به این صورت تعریف می شوند که باید نوع ان در قسمت type مشخص شود.
name : یک نام مستعار برای تابع . حالا فکر می کنید چرا نام مستعار ؟ جواب اینه که بعضی از توابع API هم نام با توابع ویژوال بیسیک است مثل تابع SetFocus که بهتر برای این تابع نام PutFocuse استفاده کنید و یه دلیل دیگه اینه که بعضی ازنام های توابع API در ویژوال مجاز نیست مثل #62 که در بتدای آن از کارکتر # استفاده شده.
َAlias : یک دستور در ویژوال بیسیک می باشد که مشخص می کند تابع نام مستعار دارد.
َAliasname : نام واقعی تابع که در فایل منبع (Libname) هست. یادتون باشه که این قسمت به حروف کوچک و بزرگ حساس هستش.
arglist : لیست تعریف متغیر هایی می باشد که در لحظه فراخوانی باید به تابع ارسال شود.
As : با این دستور که همتون آشنایی دارید . واسه تعریف نوع متغیر
Type : نوع مقدار بازگشتی را مشخص می کنه که باید یکی از مقادیر Byte,String,Long,Integer باشد.
خوب دیگه دوستان از اول شروع کردم تا تعریف API در پایان هم یه مثال می زنم . اگه سوالی در این مورد داشتید به پرسید .
از این به بعد فقط معرفی توابع و رفع اشکال
تابع AnimateWindow
هدف این تابع حالت انیمیشن و افکت های مختلف برای اشیاء می باشد . حالا این شیء می تواند فرم باشد یه یک تکس باکس یا ...
سیستم عامل مجاز این تابع ویندوز 95 به بعد می باشد.
مبداء فراخوانی : User32.dll
مقدار بازگشتی : اگر صفر باشد یعنی عدم موفقیت و غیر صفر موفقیت تابع را می رساند.
متغیر ها :
hwnd : مقداراین متغیر را مساوی با شی مورد نظر که باید افکت بر روی آن اعمال شود قرار دهید.
dwTime : مقدار این متغیر زمان اجرای تابع به میلی ثانیه می باشد
dwflags : در این متغیر باید نوع افکت را مشخص کنید. برای این کار باید یکی از مقادیر ثابت زیر را انتخاب کنید
AW_Slide : حالت انیمشن بصورت اسلاید.
AW_Activate : مشخص می کند که شی در حال بسته شدن نیست.
AW_Blend : حالت انیمیشن به صورت Fade.
AW_Hide : مخفی ساختن.
AW_Center : از وسط به سمت اطراف باز می شود.
AW_HOR_Positive : از چپ به راست باز یا بسته می شود.
AW_HOR_Negative : از راست به چپ باز یا بسته می شود.
AW_Ver_Positive : از بالا به پایین باز یا بسته می شود.
AW_Ver_Negative : از پایین به بالا باز یا بسته می شود.
هر کدام از ثابت های بالا را می توانید با کمک OR ترکیب کنید.
هر وقت که از بستن شی می خواهید استفاده کنید حتما از ثابت AW_Hide استفاده کنید
حالا ویژوال بیسیک را باز کنید سپس یک پروژه جدید ایجاد کنید. در فرم یک TextBox و دو CommandButton قرار دهید .
حالا کد زیر را در قسمت Global قرار دهید
Const AW_HOR_POSITIVE = &H1
Const AW_HOR_NEGATIVE = &H2
Const AW_VER_POSITIVE = &H4
Const AW_VER_NEGATIVE = &H8
Const AW_CENTER = &H10
Const AW_HIDE = &H10000
Const AW_ACTIVATE = &H20000
Const AW_SLIDE = &H40000
Const AW_BLEND = &H80000
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Boolean
این کد را در Comman1 قرار دهید
AnimateWindow Text1.hwnd, 5000, AW_HOR_POSITIVE 'Or AW_HIDE
این کد را در Command2 قرار دهید
AnimateWindow Text1.hwnd, 5000, AW_VER_POSITIVE Or AW_HIDE
این کد را در Form_Load قرار دهید
Text1.Visible = False
AnimateWindow Me.hwnd, 5000, AW_CENTER 'Or AW_ACTIVATE
'AnimateWindow Me.hwnd, 5000, AW_VER_POSITIVE Or AW_HOR_NEGATIVE
Me.Cls
خوب دیگه دوستان واسه این جلسه کافیه هرکی سوال داره به پرسه
یادتون نره که هر روز 3 تابع جدید معرفی می کنم ولی واسه امروز همین یکی کافیه
همه اونایی که می خان یاد بگیرن سعی کنن حتی کپی هم نکنن و تمام قسمت ها رو خودشون بنویسن تا بهتر یاد بگیرن . اگه بازم مشکل داشتید و با خطایی متوجه شدید فایلی رو که خودم گذاشتم دانلود کنید و ببینید اشتباه شما کجاست . اگه مشکل هر نشد بگید اینجا تا جوابتونو بدم