04-26-2011، 09:24 AM
مخفف Application Programming Interface می باشدکه به معنای رابط برنامه سازی کاربردی می باشد.که از آن به نامهای Application Programmer Interface، Application Programmers Interface نیز یاد می شود. نام API به توابعی اطلاق می شود که در فایلهای مختلف ویندوز مانند Advapi32.dll ،User32.dll ، Ole32.dll ، Kernel32.dll، Winmm.dllWinspool.dll ، Gdi32.dll ، Mpr.dll ، netapi32.dll، sheu32.dll، Rasapi32.dll ، Version.dll، Wsock32.dll ، Comdlg32.dll وجود دارند.
ویندوز برای صدها کارمختلف خود ازاین تابع ها استفاده می کند و برنامه های کاربردی نیز به طور متعدد از این توابع استفاده می کنند. به عنوان
مثال در زبان برنامه نویسی ویژوال بیسیک هرخط کد را که تایپ می کنید و بعد برنامه را run می کنید ، توسط توابع API کنترل می شوند.هنگامی که دستور form1.print را برای نمایش یک پیغام بر روی فرم صادر می کند ، در واقع ویژوال بیسیک در پشت صحنه از تابع API ، Elliptic استفاده می شود. و همچنین توابع دیگر، حرکت ماوس ، صفحه کلید، رنگها ، دکمه ها ، منوها و صدها عملیات دیگر.
مشخصات توابع API
اگر بخواهیم توابع API را که اکثراً با زبان برنامه نویسی قدرتمند C نوشته شده اند را براساس ساختار سیستم عامل تقسیم بندی کنیم ، می توان آن رابه دو قسمت 16 بیتی و 32 بیتی تقسیم بندی کرد.
توابع 16 بیتی به تعداد بیش از 730 تابع و توابع 32بیتی به بیش از 6500 تابع می رسند. در تابع API مانند هر تابع ساخته شده در زبان های برنامه نویسی، متغیرهای ورودی خروجی وجود دارند. این متغیرهای می توانند از انواع Long ، Integer، Int'32، String ، Pchar ،Byte و ...باشند.در بعضی از توابع API این متغیرها فقط می توانند مقدار ثابت تعریف شده ای را بگیرند. این ثابتها در نوع 16 بیتی به تعداد بیش از 1800ثابت(Const) و در 32 بیتی به بیش از 5500 ثابت می رسند.
در تعدادی از توابع متغیرهای ورودی و یا خروجی به یک ساختار (type) اشاره دارند که فیلدهای این ساختار اطلاعات ورودی و یا برگشتی تابع را در خود نگهداری می کنند. تعداد این ساختار در نوع 16بیتی به بیش از 50ساختار و نوع 32 بیتی به بیش از 950 ساختار می رسند. ،
فایلهای dllحاوی توابع API
توابع API می توانند در فایلهای متعددی تعریف شده باشند ولی مهمترین و پرکاربردترین فایلهای به شرح زیر می باشد:
User32.dll : شامل توابعی می باشد که ابزار و محیط واسط بین سیستم عامل و کاربرد مثل ماوس ، صفحه کلید منوها و پنجره ها را کنترل می کنند.
Kernel32.dll: توابع مربوط به حافظه ، فایل، پارتیشن ، درایو و پوشه در این فایل می باشند.
Gdi32.dll : این فایل که مخفف GraphicsDevice Interface می باشد، توابع گرافیکی و ترسیمی را در خود دارد.
NetAp.dll : توابع مربوط به شبکه در این فایل موجود می باشد.
Advapi32.dll : توابع کار با ریجیستری در این موجود می باشد.
Winmm.dll : توابع مربوط به مالتی مدیا دراین فایل تعریف شده اند.
Winspool.drv : توابع مربوط به چاپگر وکار با آن در این فایل می باشند.
Comdlg32.dll : توابع مربوط به حالتهای مختلف پنجره ی common Dialog در این فایل تعریف شده است.
علت استفاده از توابع API در برنامه نویسی
دلایل استفاده از توابع API در زبانهای مختلف برنامه نویسی می تواند این باشد که:
1. توابع API دلیل آنکه در فایلهای dll هر سیستم عامل ویندوز می باشد و در هر مکان مانند یکدیگر می باشند پس نیازی به ارائه آن فایل dll در نسخه ی برنامه نمی باشد و در نتیجه حجم نسخه کم می شود و در ضمن سندیت برنامه نیز بیشتر می شود و می توان گفت که شما از یکی از منابع میندوز به نحو احسن استفاده کرده اید.
2. نسخه ی ویندزو به طور مداوم تغییر می کند ولی به دلیل آنکه سازندگان همیشه حالتی را درنظر می گیرند که نسخه های قبلی را نیز پشتیبانی کند . در نتیجه اگر شما برنامه ای را به کمک توابع API بنویسید با تغییر نسخه ی ویندوز نیازی به تغییر جدی در توابع API نمی باشد.
3. بیشتر زبان های برنامه نویسی ، بخصوص زبانهای تحت ویندزو که خود بصورت پنهان از توابع API استفاده می کنند ، ممکن است بعلت محدودیت نتوانند تمام امکانات توابع را د راختیار قرار دهند . شما با دسترسی مستقیم به توابع می توانید از حداکثر قابلیتهای تابع استفاده کنید
4. در بعضی از زبانهای برنامه نویسی برای آنکه بتوان یک حالت را بوجود آورد و یا کار مشخصی را انجام داد باید خط های زیاد ی را کدنویسی کنیم و یا در زمان خطاگیری مدت زیادی را صرف کنیم و بطور حتم کاربر استفاده کننده از برنامه ی شما نیز باید زمان بیشتری را برای گرفتن جواب صرف کند. این موارد ذکر شده هرکدام به نوبه ی خود می توانند از محبوبیت ، قدرتمند و خوانا بودن برنامه بکاهند. ولی توابع API به دلیل آنکه روتین شده و از قبل نوشته شده می باشند پس فقط کافیست تابع را فراخوانی کنیم و به آن ورودی دهیم و خروجی موردنظر خود را دریافت کنیم .
5. بیشتر توابع کارهایی را انجام می دهند که زبانهای برنامه نویسی قادر به انجام آن نمی باشند. بعنوان مثال تابع SetlayeradWindowAttribute باعث مي شود يك پنجره (فرم یا کنترلهای داخل آن) و با یک رنگ مشخص در آنها به مقدار دلخواه به حالت شفاف و transparent تبدیل شوند و یا توابع دیگر مانندSHShutDownDialog ، TimeGetTim ، LokworkStation ، TransparentBlt ، StretchBlt و..
6. و چندین علت دیگر..
تعریف توابعAPI در ویژوال بیسیک ، به کمک دستورDeclare انجام می شود که می تواند بصورت Private (خصوصی برای یک فرم ) و یا Public(عمومی برای تمام فرمها) تعریف شود. شکل کلی تعریف توابع میتواند به یکی از صورتهای زیر باشد:
[Public| Private] Declare sub name lib"libname " [Alias " aliasname"][(arglist)]
[Public | Private] Declare Function name lib"libname" [Alias" aliasname"][(arg list)] [As type]
توضیح هر یک از قسمتهای فوق به شرح زیرمی باشد:
يا Pivate : این دو دستور محدوده ی تعریف و کار تابع را مشخص میکنند که میتوان بصورت Public(عمومی) برای تمام فرمهای در یک برنامه باشد که در این صورت در یک (عمومی) برای تمام فرمهای در یک برنامه باشد که در این صورت در یک Module تعریف می شود و یا می تواند بصورت Private(خصوصی) برای یک فرم باشد که در این صورت تابع در پنجره ی کدهمان فرم تعریف می شود.
Declare : این دستور تابع موجود در یک فایل API را تعریف می کند.
Sub : توابعی که به این صورت تعریف می شوند، مقدار برگشتی ندارند.
Function: توابعی که به این صورت تعریف می شوند، یک مقدار برگشتی دارند که باید نوع آن در قسمت type مشخص شود.
Name: یک نام دلخواه و مستعار برای برنامه می باشد. استفاده از نام مستعار به این دلیل می باشد که برخی از توابع با تابع های تعریف شده داخل زبان برنامه نویسی برابر می باشند مانند تابعsetfocus .
دلیل دیگر میتواند این باشد که در نام توابع API از کاراکترهایی استفاده شده است که در ویژوال بیسیک ، در ابتدای نام مجاز نمی باشند. مانند توابع –Lclose و Lopen که در ابتدای آنها از خط استفاده شده است و یا توابع #62 و#53 که در ابتدای آنها از کاراکتر # استفاده شده است.
Alias : یک دستور در ویژوال بیسیک می باشد که مشخص می کند تابع دارای نام مستعار می باشد.
Alias name: نام واقعی تابع، در فایل منبع(Libname) می باشد . توجه داشته باشید که باید حروف بزرگ و کوچک ان رعایت شود ، در غیراین صورت تابع تعریف یا فراخوانی نخواهد شد.
Arglist: لیست تعریف متغیرهایی می باشد که در لحظه فراخوانی باید به تابع ارسال شوند.
As : یک دستور در ویژوال بیسیک می باشد که جهت تعریف متغیر استفده می شود.
Type: نوع مقدار برگشتي تابع را مشخص مي كند كه مي توان يكي از مقادیر Integer,Long, String و یا Byte( در ویژوال بیسیک) باشد. Public
ویندوز برای صدها کارمختلف خود ازاین تابع ها استفاده می کند و برنامه های کاربردی نیز به طور متعدد از این توابع استفاده می کنند. به عنوان
مثال در زبان برنامه نویسی ویژوال بیسیک هرخط کد را که تایپ می کنید و بعد برنامه را run می کنید ، توسط توابع API کنترل می شوند.هنگامی که دستور form1.print را برای نمایش یک پیغام بر روی فرم صادر می کند ، در واقع ویژوال بیسیک در پشت صحنه از تابع API ، Elliptic استفاده می شود. و همچنین توابع دیگر، حرکت ماوس ، صفحه کلید، رنگها ، دکمه ها ، منوها و صدها عملیات دیگر.
مشخصات توابع API
اگر بخواهیم توابع API را که اکثراً با زبان برنامه نویسی قدرتمند C نوشته شده اند را براساس ساختار سیستم عامل تقسیم بندی کنیم ، می توان آن رابه دو قسمت 16 بیتی و 32 بیتی تقسیم بندی کرد.
توابع 16 بیتی به تعداد بیش از 730 تابع و توابع 32بیتی به بیش از 6500 تابع می رسند. در تابع API مانند هر تابع ساخته شده در زبان های برنامه نویسی، متغیرهای ورودی خروجی وجود دارند. این متغیرهای می توانند از انواع Long ، Integer، Int'32، String ، Pchar ،Byte و ...باشند.در بعضی از توابع API این متغیرها فقط می توانند مقدار ثابت تعریف شده ای را بگیرند. این ثابتها در نوع 16 بیتی به تعداد بیش از 1800ثابت(Const) و در 32 بیتی به بیش از 5500 ثابت می رسند.
در تعدادی از توابع متغیرهای ورودی و یا خروجی به یک ساختار (type) اشاره دارند که فیلدهای این ساختار اطلاعات ورودی و یا برگشتی تابع را در خود نگهداری می کنند. تعداد این ساختار در نوع 16بیتی به بیش از 50ساختار و نوع 32 بیتی به بیش از 950 ساختار می رسند. ،
فایلهای dllحاوی توابع API
توابع API می توانند در فایلهای متعددی تعریف شده باشند ولی مهمترین و پرکاربردترین فایلهای به شرح زیر می باشد:
User32.dll : شامل توابعی می باشد که ابزار و محیط واسط بین سیستم عامل و کاربرد مثل ماوس ، صفحه کلید منوها و پنجره ها را کنترل می کنند.
Kernel32.dll: توابع مربوط به حافظه ، فایل، پارتیشن ، درایو و پوشه در این فایل می باشند.
Gdi32.dll : این فایل که مخفف GraphicsDevice Interface می باشد، توابع گرافیکی و ترسیمی را در خود دارد.
NetAp.dll : توابع مربوط به شبکه در این فایل موجود می باشد.
Advapi32.dll : توابع کار با ریجیستری در این موجود می باشد.
Winmm.dll : توابع مربوط به مالتی مدیا دراین فایل تعریف شده اند.
Winspool.drv : توابع مربوط به چاپگر وکار با آن در این فایل می باشند.
Comdlg32.dll : توابع مربوط به حالتهای مختلف پنجره ی common Dialog در این فایل تعریف شده است.
علت استفاده از توابع API در برنامه نویسی
دلایل استفاده از توابع API در زبانهای مختلف برنامه نویسی می تواند این باشد که:
1. توابع API دلیل آنکه در فایلهای dll هر سیستم عامل ویندوز می باشد و در هر مکان مانند یکدیگر می باشند پس نیازی به ارائه آن فایل dll در نسخه ی برنامه نمی باشد و در نتیجه حجم نسخه کم می شود و در ضمن سندیت برنامه نیز بیشتر می شود و می توان گفت که شما از یکی از منابع میندوز به نحو احسن استفاده کرده اید.
2. نسخه ی ویندزو به طور مداوم تغییر می کند ولی به دلیل آنکه سازندگان همیشه حالتی را درنظر می گیرند که نسخه های قبلی را نیز پشتیبانی کند . در نتیجه اگر شما برنامه ای را به کمک توابع API بنویسید با تغییر نسخه ی ویندوز نیازی به تغییر جدی در توابع API نمی باشد.
3. بیشتر زبان های برنامه نویسی ، بخصوص زبانهای تحت ویندزو که خود بصورت پنهان از توابع API استفاده می کنند ، ممکن است بعلت محدودیت نتوانند تمام امکانات توابع را د راختیار قرار دهند . شما با دسترسی مستقیم به توابع می توانید از حداکثر قابلیتهای تابع استفاده کنید
4. در بعضی از زبانهای برنامه نویسی برای آنکه بتوان یک حالت را بوجود آورد و یا کار مشخصی را انجام داد باید خط های زیاد ی را کدنویسی کنیم و یا در زمان خطاگیری مدت زیادی را صرف کنیم و بطور حتم کاربر استفاده کننده از برنامه ی شما نیز باید زمان بیشتری را برای گرفتن جواب صرف کند. این موارد ذکر شده هرکدام به نوبه ی خود می توانند از محبوبیت ، قدرتمند و خوانا بودن برنامه بکاهند. ولی توابع API به دلیل آنکه روتین شده و از قبل نوشته شده می باشند پس فقط کافیست تابع را فراخوانی کنیم و به آن ورودی دهیم و خروجی موردنظر خود را دریافت کنیم .
5. بیشتر توابع کارهایی را انجام می دهند که زبانهای برنامه نویسی قادر به انجام آن نمی باشند. بعنوان مثال تابع SetlayeradWindowAttribute باعث مي شود يك پنجره (فرم یا کنترلهای داخل آن) و با یک رنگ مشخص در آنها به مقدار دلخواه به حالت شفاف و transparent تبدیل شوند و یا توابع دیگر مانندSHShutDownDialog ، TimeGetTim ، LokworkStation ، TransparentBlt ، StretchBlt و..
6. و چندین علت دیگر..
تعریف توابعAPI در ویژوال بیسیک ، به کمک دستورDeclare انجام می شود که می تواند بصورت Private (خصوصی برای یک فرم ) و یا Public(عمومی برای تمام فرمها) تعریف شود. شکل کلی تعریف توابع میتواند به یکی از صورتهای زیر باشد:
[Public| Private] Declare sub name lib"libname " [Alias " aliasname"][(arglist)]
[Public | Private] Declare Function name lib"libname" [Alias" aliasname"][(arg list)] [As type]
توضیح هر یک از قسمتهای فوق به شرح زیرمی باشد:
يا Pivate : این دو دستور محدوده ی تعریف و کار تابع را مشخص میکنند که میتوان بصورت Public(عمومی) برای تمام فرمهای در یک برنامه باشد که در این صورت در یک (عمومی) برای تمام فرمهای در یک برنامه باشد که در این صورت در یک Module تعریف می شود و یا می تواند بصورت Private(خصوصی) برای یک فرم باشد که در این صورت تابع در پنجره ی کدهمان فرم تعریف می شود.
Declare : این دستور تابع موجود در یک فایل API را تعریف می کند.
Sub : توابعی که به این صورت تعریف می شوند، مقدار برگشتی ندارند.
Function: توابعی که به این صورت تعریف می شوند، یک مقدار برگشتی دارند که باید نوع آن در قسمت type مشخص شود.
Name: یک نام دلخواه و مستعار برای برنامه می باشد. استفاده از نام مستعار به این دلیل می باشد که برخی از توابع با تابع های تعریف شده داخل زبان برنامه نویسی برابر می باشند مانند تابعsetfocus .
دلیل دیگر میتواند این باشد که در نام توابع API از کاراکترهایی استفاده شده است که در ویژوال بیسیک ، در ابتدای نام مجاز نمی باشند. مانند توابع –Lclose و Lopen که در ابتدای آنها از خط استفاده شده است و یا توابع #62 و#53 که در ابتدای آنها از کاراکتر # استفاده شده است.
Alias : یک دستور در ویژوال بیسیک می باشد که مشخص می کند تابع دارای نام مستعار می باشد.
Alias name: نام واقعی تابع، در فایل منبع(Libname) می باشد . توجه داشته باشید که باید حروف بزرگ و کوچک ان رعایت شود ، در غیراین صورت تابع تعریف یا فراخوانی نخواهد شد.
Arglist: لیست تعریف متغیرهایی می باشد که در لحظه فراخوانی باید به تابع ارسال شوند.
As : یک دستور در ویژوال بیسیک می باشد که جهت تعریف متغیر استفده می شود.
Type: نوع مقدار برگشتي تابع را مشخص مي كند كه مي توان يكي از مقادیر Integer,Long, String و یا Byte( در ویژوال بیسیک) باشد. Public