توضیحی مختصر درباره API
قلب ویندوز یعنی چیزی که اساس سیستم عامل ویندوز است، چیزی نیست بجز توابع API .
API مخفف کلمه Aplication programming interface میباشد که به معنای رابط برنامه سازی کاربردی است.
که از آن به نام های Aplication programming Interface و Application Programmers Interface نیز یاد شده است.
نام API به توابعی اطلاق میشود که در فایل های مختلف ویندوز مانند advapi32.DLL و userDLL32.DLL و ole32.DLL و ... وجود دارند.
هر کاری که در ویندوز روی می دهد و هر اتفاقی که می افتد با استفاده از این توابع صورت می گیرد.
در حقیقت نوشتن برنامه برای ویندوز از صدا کردن توابع API تشکیل می شود.
API بخشی از خود ویندوز است. لذا تمام برنامهای کاربردی ویندوز به همان توابعی دسترسی دارند که برنامه های دیگر دارند.
در محیط چند وظیفه ای ویندوز ضروری است که تمام برنامه ها در روش تعریف شده دقیق عمل کنند . با استفاده از توابع API که در تمامی برنامه های کاربردی استفاده می شود این سازگاری بوجود می آید.
شاید شما ندانسته تا حالا بارها با API کار کرده باشید. وقتی شما در محیط یک زبان برنامه نویسی مثل Delphi یا Visual Basic یا هر محیط دیگری پروژه جدیدی را آغاز می کنید و فرم اولیه را روی صفحه آورده و آماده طراحی می شوید در واقع استفاده از توابع API را آغاز کرده اید . در حقیقت در همان لحظه تابع Create Window فراخوانده شده است و فرم مزبور در مقابل شما قرار می گیرد که خود این تابع یکی از توابع API است.
از نظر برنامه نویس API شامل یک سری زیر برنامه ی آماده و کاملا سالم می باشد که در اختیار برنامه نویسان محیط ویندوز قرار می گیرد.
مشخصات توابع API
اگر بخواهیم توابع API را تقسیم بندی کنیم به دو دسته 16 بیتی و 32 بیتی تبدیل میشوند که دسته 16 بیتی دارای 730 تابع و دسته 32 بیتی دارای 6500 تابع میباشد.این روالها درون فایلهایی وجود دارند که در پوشه های Windows و Windows\System ذخیره شده اند.
در توابع API مانند هر زبان برنامه نویسی متغیر های ورودی و خروجی وجود دارد. این متغیر ها میتوانند از نوع long , integer , string , byte و ... باشند.
برخی از این توابع میتوانند فقط مقدار ثابت تعریف شده ای را بگیرند.
در تعدادی از توابع متغیر های ورودی و خروجی یه یک ساختار TYPE اشاره دارند که فیلدهای این ساختار اطلاعات ورودی یا برگشتی تابع را در خود نگهداری میکنند.
توابع API در کجا قرار می گیرند؟
حتما این سوال برای شما پیش آمده که این توابع قدرتمند در کجا قرار دارند؟ یا اینکه این توابع کجا هستند که می توانند به طور اشتراکی در چند برنامه و حتی خود ویندوز مورد استفاده قرار گیرند؟ ابتدا باید مطالبی در مورد فایل های DLL بیاموزید.
DLL چیست؟
در حقیقت DLL ها هم مانند API ابزاری هستند که شما از آنها استفاده کرده اید ولی شاید نمی دانستید. اگر نگاهی به دایرکتوری system یا windows یا System32 بیندازید تعداد زیادی از این فایل های DLL می بینید!
Dynamic Linked Library (DLL): به معنای کتابخانه پیوندی پویا می باشد که می تواند شامل انواع داده یا کد باشد. درون DLL میتوان انواع داده ها همانند کد - تصویر - صوت و غیره را قرار داد.
فایلهای DLL در دسترس برنامه هایی که به زبان ویژوال بیسیک و زبانهای دیگری(که از DLL پشتیبانی می کنند) نوشته شده اند می باشد.
نکته جالب فایل های DLL خاصیت مستقل از زبان برنامه نویسی این فایل ها می باشد. یعنی اگر DLL با استفاده از Delphi ایجاد شده باشد می تواند Visual Basic یا Visual C++ از آن استفاده کرد.
نکته دیگر DLL ها صرفه جویی در مصرف حافظه می باشد که به همین دلیل نام Dynamic را به همراه خود دارند. در واقع هر قسمت از DLL که فراخوانی می شود همان قسمت به حافظه بار می شود و در صورت عدم نیاز هم از حافظه خارج می شود.
در واقع دلایل استفاده از DLL را موارد زیر را می توان نام برد:
• توانایی اشتراکی کردن کد بین چند برنامه و حتی خود ویندوز
• استفاده مجدد از کد های نوشته شده.
• استفاده بهینه از منابع ویندوز و منابع سیستم.
• جدا کردن کد های مختلف از هم.
لازم به ذکر است که DLL ها را می توان به زبان هایی مانند Delphi و Visual C++ تولید کرد.
حالا می توانیم به سوال قبلی پاسخ دهیم . API درون فایلهایی وجود دارند که در پوشه های Windows و Windows\System ذخیره شده اند. هنگام نصب ویندوز فایلهای DLL نیز ذخیره می شوند ، پس به طور اتوماتیک به این کتابخانه ها دسترسی دارید.
مهمترین DLL ها که بیشترین API ها را در خود جا داده اند عبارتند از Kernel32.DLL و User32.DLL و Shell32.DLL و ... البته DLL های دیگری هم وجود دارند!
اکثر فایلهای DLL پسوند .DLL یا .EXE دارند.هربرنامه ای که می نویسید به این فایلها دسترسی دارد.این فایلهای DLL در ویرایش های قدیمی تر ویندوز (قبل از 95) هم وجود داشتند ، منتها این فایلها شماره 32 را (که نشان دهنده سازگار 32 بیتی است)در نام خود نداشتند.ویرایشهای قبل از ویندوز 95 سیستمهای 16 بیتی بودند ، بدین معنی که انتقال اطلاعات با نرخ 16 بیت یا دو بایت انجام می شد.برنامه نویسی در محیط های 32 بیتی ، انعطاف بیشتر ، سرعت زیادتر و کارایی بالاتر را در مقایسه با یک محیط 16 بیتی قدیمی دارد.