انجام پایان نامه

درخواست همکاری انجام پایان نامه  بانک مقالات رایگان انجام پایان نامه

سفارش پایان نامه

|

انجام پایان نامه ارشد

 پایان نامه 

پایان نامه‏ کامپیوتر

انجام پایان نامه‏ ارشد کامپیوتر

توضيحي مختصر درباره 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 بيتي قديمي دارد.
سه فايل كه عمدتا استفاده مي شوند عبارتند از:
•    Usre32.DLL: شامل توابعي است كه محيط ويندوز و واسط كاربر مثل مكان نماها ، منوها و پنجره ها را كنترل مي كند .
•    Gdi32.DLL: شامل توابعي است كه خروجي برنامه به صفحه تصوير و ابزارهاي ديگر را كنترل مي كنند.
•    Kernel32.DLL: شامل توابعي است كه سخت افزار و واسط نرم افزار داخلي ويندوز را كنترل مي كنند.اكثر روالهاي مربوط به حافظه ، فايل و دايركتوري درون Kernel32.DLL قرار دارند.
توجه: ويندوز يك سيستم عامل است كه از چند لايه تشكيل شده است.شروع اين لايه ها با واسط گرافيكي كاربر يا GUI(Grapical User Interface) است كه كاربر مي بيند و ختم آنها با نزديك ترين لايه به سخت افزار است كه جريان داده ها بين برنامه و سخت افزار را كنترل مي كند. اين پايين ترين سطح سيستم عامل را هسته اصلي (Kernel) مي گويند. بنابراين نام Kernel32.DLL مربوط به كتابخانه اي است كه تعدادي روال بر مبناي هسته اصلي را دارد.
اين سه فايل بيشتر روالها يا توابع API را نگه مي دارند.با يك نگاه كوتاه به پوشه هاي Windows و  Windows \ system چند كتابخانه پيوند ديناميكي ديگر را نيز مي بينيد مثل COMDLG.DLL,MAPI32.DLL,NETAPI32.DLLوWINMM.DLL . همچنانكه  مايكروسافت قابليتهايي را به سيستم عامل اضافه مي كند، فايلهاي جديد DLL هم ظاهر مي شوند.
فايلهاي DLL فقط قسمتي از ويندوز نمي باشند . وقتي يك برنامه جديد را به سيستم خودتان اضافه مي كنيد.اين برنامهDLL خاص خودش را فراهم مي كند.بنابراين در طول زمان تعداد زيادي فايل DLL روي سيستم خودتان خواهيد داشت.
ماهيت فايلهاي  DLL:
اصطلاح پيوند ديناميكي معاني خاصي براي برنامه نويسان دارد.وقتي گفته ميشود كه يك روال با يك برنامه پيوند ديناميكي دارد بدين معناست كه اين روال(سابروتين يا تابع) تا قبل از ترجمه برنامه به آن متصل نمي شود .اين تابع فقط در زمان اجرا در دسترس برنامه مي باشد.توابعي كه درون پنجره كد مي نويسيد داراي پيوند استاتيكي ميباشند،يعني هر وقت برنامه را ترجمه مي كنيد اين توابع با بقيه كد اصلي تركيب مي شوند.اما فايلهاي DLL برنامه تركيب نمي شوند. برنامه شما به اين روالها در زمان اجرا دسترسي دارداما فايل EXE برنامه شامل روالهاي واقعي DLL نمي باشد.
اين توابع زماني با ارزش است كه مي خواهيد توابع را به عنوان كتابخانه هاي پيوند ديناميكي استفاده كنيد، زيرا كتابخانه يا توابعي كه برنامه شما احضار مي كند هيچوقت قسمتي از برنامه شما نيستند.توابع API اندازه فايلهاي برنامه شما را زياد نمي كنند.حين اجراي برنامه اين روالها در مواقع ضروري بار مي شوند ، در ادامه چنانچه ديگر نيازي به آنها نباشد سيستم عامل ويندوز مي تواند منابع را آزاد كندتا حافظه و وقت CPU صرف روالهاي جديد شود.
اما مزيت عمده پيوند ديناميكي اين نيست كه موجب افزايش راندمان منابع مي گردند.چنانچه ويندوز تغيير كند اين فايلهاي DLL با ويرايشهاي جديد DLL بايد جايگزين شوند.بنابراين برنامه شما قادر است تا از قابليتهاي جديد ويندوز استفاده كند بدون آنكه مجبور باشيد همه برنامه هايي را كه از API ويندوز استفاده ميكنند مجددا ترجمه كنيد.به عنوان مثال در ويندوز 95 ظاهر پنجره ها تغيير كرد.شمايلهاي موجود در گوشه بالا و سمت راست يك پنجره نسبت به ويندوز 11.3 تفاوت دارند.اما هر برنامه ويژوال بيسيك كه براي نمايش پنجره يك تابع API ويندوز را احضار مي كند در همه محيطهاي ويندوز اينگونه عمل مي كند. يعني اين برنامه وقتي در محيط ويندوز11.3  اجرا ميشود شمايلهاي قديمي را نشان ميدهد با وجودي كه برنامه را تغيير نداده ايد. در نتيجه در اكثر مواقع وقتي از ويرايشهاي مختلف ويندوز استفاده ميكنيد، برنامه هاي شما كه به API ويندوز دسترسي دارند به هيچ تغييري نياز ندارند.
نكته1: ويندوز فقط يك برنامه بزرگ نيست ، بلكه مجموعه اي از تعداد زيادي برنامه است كه برخي از آنها درون فايلهاي DLL قرار دارند .شايد ويندوز خودش بزرگترين استفاده كننده از فايلهاي DLL باشد.
نكته2:مزيت استفاده از روالهاي DLL آن است كه چند برنامه اجرايي تحت ويندوز ميتوانند به يك روال از فايل DLL دسترسي داشته باشند
دلايل استفاده از توابع API
1-    توابع API به دليل اينكه در فايلهاي DLL هر سيستم عامل ويندوز ميباشند و در هر مكان مانند يكديگر ميباشند پس نيازي به ارايه ي آن فايل DLL در نسخه برنامه نميباشد و در نتيجه حجم نسخه كم ميشود.
2-    بيشتر توابع كارهايي را انجام ميدهند كه زبان هاي برنامه نويسي قادر به انجام آن كار نيست.
و چندين علت ديگر ...

چند نمونه از توابع API در ويندوز:

    GetSysColor
 كتابخانه:  User32    سيستم عامل:, CE , 2000 , 98 , 95 مبتني بر NT
اين تابع مقدار ارزشيRBG يكي از رنگهاي سيستم را برميگرداند.رنگهاي سيستم آنهايي هستندكه يك پنجره مورد استفاده توسط آنها كشيده مي شود.براي مثال رنگ تيتر پنجره.رنگ اسكرول بار(Scrollbar) ، رنگ زمينه(DeskTop) و رنگ دور(Border) و ...
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetSystemMetrics
كتابخانه:User32    سيستم عامل: , 32S, 98,95مبتني بر NT
اين تابع اطلاعات بسيار گوناگوني از ويندوز ميدهد.بيشتر اينها با اندازه هاي اشياي گوناگون از جمله صفحه ، آيكونها، كرسر و ... سركار دارند.اين دستور اطلاعات در رابطه با سيستم را آماده مي كند.
مقدار برگشتي اين تابع بستگي به مقدار  nindex * دارد.همه اندازه هاي نگهداري شده(درازا و پهنا)بر حسب نقطه(pixel) ميباشد.توجه كنيد معني بعضي از اقلام سيستم متريك در ويندوز 95 و 98 با ويندوز NT كمي متفاوت است.
*: nindex --< يك ايندكس كه فلگ است و نوع اطلاعات را مشخص ميكند.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetsystemMenu
كتابخانه:  User32    سيستم عامل: ,CE , 2000 , 98 , 95مبتني برNT
اين تابع هندل منوي سيستم را برميگرداند(كه به آن كنترل منو نيز مي گويند).اين منو زماني ظاهر ميشود كه ما روي آيكون برنامه در روي تايتل بار پنجره برنامه مان كليك كنيم  يا روي خود تايتل بار كليك راست را بزنيم.وقتي كه شما بتوانيد هندل منوي سيستم را پيدا كنيد، ميتوانيدبه ان آيتم اضافه يا كم كنيد.(اين نكته يعني كار بر روي منوبار سيستم بسيار مهم است).نكته مهم ديگر اين است كه با انتخاب هر آيتم از منوي سيستم يك پيام(يك كد) به WM_SYSCOMMAND ارسال ميگردد.به جاي آنكه اين پيام به WM_COMMAND ارسال شود.از تابع GetSystemMenu مي توان براي ذخيره مجدد(برگرداندن)آيتمهاي پيش فرض پس از تغييرات نيز استفاده نمود.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetNumberForemat
كتابخانه:  Kernel32    سيستم عامل: CE , 2000 , NT , 98 , 95
اين تابع يك عدد را براي نمايش فرمت ميكند.به صورت پيش فرض تابع فرمت عدد را با استفاده از setting محلي انجام ميدهد.اگر چه ارجحيت با فرمت تعيين شده كاربر ميباشد.نتيجه نهايي تابع ، يك عدد براي نمايش مطابق با خواست كاربر ميباشد.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetMenu
كتابخانه:  User32    سيستم عامل: 2000 , NT , 98 , 95
اين تابع تشخيص ميدهد كه كدام منو به يك پنجره اختصاص داده شده است.اين منو به صورت يك منوبار ظاهر مي شود.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetLogicalDrives
كتابخانه:  Kernel32    سيستم عامل: 32S,NT,98,95
اين تابع همه درايوهاي منطقي موجود در كامپيوتر را تعيين مي كند.درايو منطقي با يك حرف مشخص مي شود مانند a: يا  c:. اين تابع براي هر درايو يك بيت برميگرداند.با استفاده از عملگر AND شما ميتوانيد درايوها را مشخص نمايد. مثلا براي مشخص شدن وجود درايو c كافيست مقدار برگشتي را با عدد 4 تركيب  AND نماييد.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetLocalTime
كتابخانه:  Kernel32    سيستم عامل: NT,98,95
اين تابع تاريخ و زمان سيستم را برميگرداند.تاريخ و زمان اجزاي مختلفي دارند(ماه ، روز، ساعت، دقيقه و ثانيه و ...) حتي هزارم ثانيه نيز در اين متغير پاس داده مي شود و در IpsystemTime * ذخيره مي گردد. ويندوز زمان محلي را به زمان سيستم ترجيح ميدهد.
*: IpSystemTime --< متغيري كه اطلاعات تاريخ و ساعت در آن قرار دارد.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetHostName
كتابخانه:  WSock32    سيستم عامل: NT,98,95,2000,CE
اين تابع نام كامپيوتر ميزبان را استخراج ميكند، كه ميتواند يك نام ساده يا يك نام دومين Domain)) باشد.هر چه كه باشد با ان و تابع GetHostByName ميتوان اطلاعات مورد نياز را از شبكه استخراج نمود ، مانند IP.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetHostByName
كتابخانه:  WSock32    سيستم عامل: NT,98,95,2000,CE
اطلاعات كامپيوتر را بر اساس نام آن (domain) برميگرداند.اطلاعات ميزبان داخل يك استراكچر با نام HOSTENT ذخيره مي شود. يك اشاره گر كه توسط اين تابع برگشت ميشود به اين استراكچر اشاره مي كند.توجه كنيد كه اين تابع، كامپيوتر ميزبان را بر اساس IP  نمي تواند مشخص كند(به جاي ان از تابع GetHostByAddr استفاده ميگردد).
نكته: براي دستيابي به اطلاعات برگشتي از تابعGetMemory براي كپي داده و انتقال اطلاعات مي توان استفاده نمود.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetHostByAddr
كتابخانه:  WSock32    سيستم عامل: NT,98,95,2000,CE
اطلاعاتي راجع به كامپيوتر ميزبان مي دهد.اين كامپيوتر معمولا با آدرس شبكه اي شناخته ميشود(معمولا نياز به آدرس IP نيست).اطلاعات راجع به كامپيوتر ميزبان درون يك استراكچر با نام HOSTENT ذخيره ميشود ، كه اين تابع با برگرداندن يك اشاره گر به ان اشاره ميكند.
نكته:براي دستيابي به اطلاعات برگشتي از تابع CopyMemory براي كپي داده و انتقال اطلاعات مي توان استفاده كرد.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    CopyMemory
كتابخانه:  Kernel32    سيستم عامل: CE , 2000 , NT , 98 , 95
اين تابع بسيار شبيه به تابع MoveMemory ميباشد.واقعيت اين است كه هر دو اينها مشابه هم هستند.تابع فوق قسمتي از يك محل حافظه را به محل ديگرMove ميكند. و هر دو به وسيله اشاره گرهايي  آدرس دهي ميشوند.پس از كپي حافظه ،مبدا با مقدار صفر پر ميشود.
نكته: يك اشاره گر ميتواند خود به خود با پاس دادن خود متغير به جاي مبدا و مقصد نيز ساخته شود.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetFocus
كتابخانه:  User32    سيستم عامل: CE , 2000 , NT , 98 , 95
هندل پنجره فعال كه سيستم روي ان متمركز شده را برميگرداند.اگر روي پنجره اي خارج از برنامه در حال اجرا (پنجره اي كه جز برنامه ما نيست )متمركز شويم ، اين تابع خطا بر ميگرداند.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetFileTime
كتابخانه:  Kernel32    سيستم عامل: CE , 2000 , NT , 98 , 95
اين تابع زمانها و تاريخهاي ايجاد ، اخرين دسترسي و آخرين تغييرات را بر ميگرداند.اين زمانها و تاريخ ها بر اساس سيستم UTC (مطابق زمان جهاني، زمان گرينويچ GTM) ميباشد و نه زمان محلي كامپيوتر.
توجه كنيد كه نتيجه كاملا وابسته به زمان فايل و سيستم است.زيرا سيستم عامل زمانهاي ايجاد دسترسي و تغييرات را به طور كامل ذخيره نمي كند(يعني ممكن است تاريخ نمايش داده شده ، تاريخ واقعي ذخيره شده نباشد. زيرا تاريخ ذخيره شده به صورت مختصر مي باشد ولي براي نمايش آنرا بر اساس يك سري پيش فرض كامل مي كند.)
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetDiskFreeSpace
كتابخانه:  Kernel32    سيستم عامل: CE , 2000 , NT , 98 , 95
اين تابع اطلاعاتي راجع به فضاي خالي يك ديسك به ما ميدهد.اين اطلاعات شامل تعداد سكتورهاي هر كلاستر و تعداد بايت هاي يك سكتور و تعداد كلاسترهاي خالي و تعداد كل كلاسترهاست.به دليل وجود محدوديت در عدد(حداكثر 32 بيتي) اين دستور در نهايت مي تواند براي هارد ديسكهاي حداكثر 2 مگابايت پاسخگو باشد.ولي تابع GetDiskFreespaceEx اين محدوديت را ندارد.
&&&&&&&&&&&&&&&&&&&&&&&&&&
    GetComputerName
كتابخانه:  Kernel32    سيستم عامل: NT , 98 , 95
نام كامپيوتر مورد استفاده را برميگرداند.اين نام در پارامتري به نام IpBuffer ذخيره ميگردد.اگر خطا باشد مقدار صفر و در صورت موفق بودن تابع مقدار يك را برميگرداند.
نكته:اگر مي خواهيد تغيير نام را به صورت دستي انجام دهيد با استفاده از اين دستور نام كامپيوتر را پيدا كرده و آنرا در رجيستري ويندوز جستجو نماييد و در صورت نياز انرا تغيير دهيد.








انجام پایان نامه

انجام پایان نامه کامپیوتر، انجام پایان نامه ارشد کامپیوتر، انجام پایان نامه، پایان نامه

برای دیدن ادامه مطلب از لینک زیر استفاده نمایید

  دانلود مقاله | انجام پایان نامه

سفارش پایان نامه