RightClick

امروز 20 اسفند 1388 20:49

همه زمانها UTC + 3:30 ساعت هستند




ارسال مبحث جديد پاسخ به مبحث [ 2 پست ] 
نويسندهپيغام
 موضوع پست: توابع API
پستارسال شده در: 13 شهريور 1385 11:42 
آفلاين
تازه وارد
تازه وارد
نماد کاربر

تاريخ عضويت: 7 شهريور 1385 13:56
پست ها : 3
دريافتي: 0 تشكر
رسيده: 0 تشكر
ويندوز چيست (از نگاه برنامه نويسي و توابع API):

ويندوز يک سيستم عامل چند وظيفه اي و چند کاربره گرافيکي براي کامپيوتر هاي شخصي است.
در زمان سيستم عامل Dos کاربران درون يک محيط متني ساده ، تک کاربره و تک وظيفه اي کارهاي خود را انجام مي دادند . اما در اواسط دهه 1980 ميلادي نيازهاي جديدي پيدا شد از قبيل امکان اجراي چند برنامه همزمان ، امکان دسترسي چند کاربر ، رابط کاربري زيباتر ، مديريت کامل بر منابع و غيره. اينگونه بود که سيستم عامل Windows متولد شد.
سيستم عامل Windows به تمام نيازهاي فوق پاسخ داد اما محدوديت هايي نيز بوجود آورد مخصوصا براي برنامه نويسان سيستمي.
در محيط Dos شما مجاز به استفاده از تمام قسمت هاي حافظه بوديد. اما در Windows چنين چيزي نيست زيرا نمي توان به بخشهايي از حافظه که متعلق به برنامه ديگري است دسترسي داشت حتي نمي توان آنها را خواند. و يا استفاده از فضاي حافظه مجازي تحت نظر سيستم فايل است که اجازه هيچ گونه دسترسي مستقيم به Hard Disk را به ما نمي دهد. مورد بسيار مهم ديگر اين است که در Dos برنامه نويس مي بايست خودش با Port ها ارتباط برقرار کند اما در Windows چنين اجازه اي ندارد. و موارد بسيار زياد ديگر(مخصوصا در ارتباط با سخت افزار).
اما اينها هيچ کدام ضعف نيست بلکه نشان دهنده قدرت Windows است که اجازه نمي دهد برنامه ها در کارهاي يکديگر دخالت کنند . با وجود اين دست برنامه نويس هم براي انجام کارهاي مورد نياز بسته نيست بلکه همان ويندوزي که تمام کارها را بدست مي گيرد همان نيز امکاناتي را به برنامه نويس مي دهد تا بتواند برنامه سيستمي بنويسد . اين امکانات API (Application Programming Interface)ناميده مي شوند . در واقع API يکسري توابع استاندارد است که شرکت Microsoft داخل يکسري فايل DLL براي برنامه نويسي سيستمي قرار داده است و بيش از 1000 تابع و رويه (Procedure) مي باشد.
API را اصطلاحا قلب ويندوز مي نامند ، هر کاري که در اين سيستم عامل انجام مي شود API است يعني خود اين سيستم عامل هم براي بسياري از اعمال خويش نيز از آن استفاده مي کند. زبانهاي برنامه نويسي که تحت Windows کار مي کنند (مثل Delphi) از API استفاده مي نمايند . مثلا اگر يک متغير تعريف کنيد يک API بصورت خودکار اجرا شده و مقدار حافظه مورد نياز را به برنامه شما اختصاص مي دهد.
پس به زباني مي توان ادعا کرد که Windows مجموعه اي از توابع API است و مي توان گفت که نه تنها اين سيستم عامل ما را محدود نکرده است بلکه کار ما را ساده نموده است. مثلا اگر در Dos مجبور بوديم براي Save يک فايل ، کلي برنامه نويسي کنيم وهمه چيز را در نظر بگيريم که مثلا مبادا اطلاعاتمان روي اطلاعات ديگري Overwrite شود ، در Windows کافي است يک API را فراخواني کنيد و به همين سادگي Window تمام کارهاي مربوطه را انجام مي دهد.
در اين Topic باز هم از API و نحوه کارکردن با آن ، DLL ها ، Message ها ، DC ها و غيره در چند روز آينده صحبت خواهد شد.

_________________
ما مي توانيم...


بالا
 مشخصات  
 
 موضوع پست: مثال از API
پستارسال شده در: 18 شهريور 1385 8:22 
آفلاين
تازه وارد
تازه وارد
نماد کاربر

تاريخ عضويت: 7 شهريور 1385 13:56
پست ها : 3
دريافتي: 0 تشكر
رسيده: 0 تشكر
امروز براي نمونه دو سه تا از API هاي ساده و کارآمد را معرفي مي کنيم. البته قبل از آن اين مطلب را بگويم که Delphi استفاده از توابع API را ساده کرده است و ما حداکثر با Use کردن يک فايل از آنها استفاده مي کنيم.

1- رويه ( Procedure ) Sleep:
با استفاده از اين رويه در اجراي برنامه مي توان وقفه اي ايجاد کرد.
شکل کلي اين رويه به صورت زير است.
کد:
Procedure Sleep(dwMilliseconds:DWord);

همانطور که پيدا است اين رويه يک ورودي از جنس DWord مي گيرد. اين ورودي عددي است که زمان توقف را بر حسب ميلي ثانيه مشخص مي کند(مثلا عدد 1000 معرف يک ثانيه است).

مثال:کد زير مقدار Progress يک ProgressBar را از 0 تا 100 درصد در طول 10 ثانيه زياد مي کند.
کد:
var
i:Byte;
begin
  i:=0;
  while i<100 do
    begin
        i:=i+10;
        ProgressBar1.Position:=i;
        Sleep(1000);
    end;
end;

2- تابع CopyFile:
يک فايل را از محلي به محلي ديگر کپي مي کند.
شکل کلي اين تابع به صورت زير است.
کد:
Function CopyFile (lpExistingFilename, lpNewFilename:PChar, bFailIfExists:BOOL):BOOL;


پارامتر lpExistingFilename يک String(در حقيقت PChar که نوعي رشته است) است که مسير و نام فايل مبدا را مشخص مي کند.
پارامتر lpNewFilename يک String(در حقيقت PChar که نوعي رشته است) است که مسير و نام فايل مقصد را مشخص مي کند. دقت کنيد که نام فايل مقصد نيز بايد قيد شود و معمولا برابر با نام فايل مبدا گرفته مي شود.
پارامتر bFailIfExists يک مقدار منطقي(Boolean) است که اگر فايل در مقصد وجود داشت چه کاري انجام شود. اگر True بود و فايل مقصد قبلا موجود باشد کار تابع نيمه تمام مي ماند و اگر False باشد روي فايل اول Overwrite مي گردد.
خروجي تابع منطقي است و اگر کارش به درستي انجام شود، True و در غير اين صورت False است.
مثال:خط زير يک فايل را از درايو C داخل درايو D کپي مي کند و اگر فايل در مقصد وجود داشته باشد آنرا Overwrite مي کند.
کد:
CopyFile('C:\Chortke.jpg','D:\Chortke.jpg',False);


3- تابع GetDriveType :
اين تابع نوع هر يک از درايوهاي سيستم را مشخص مي کند انواعي از قبيل فلاپي ، ديسک سخت ، CDROM و غيره.
شکل کلي اين تابع به صورت زير است.
کد:
Function GetDriveType(lpRootPathName:PChar): LongWord;
پارامتر lpRootPathName يک رشته است و نام درايو مورد نظر را مشخص مي کند مثل "C:\".

خروجي اين تابع يک عدد است که مي تواند مقادير زير باشد.
DRIVE_UNKNOWN: درايوي که معرفي شده است قابل دسترسي نمي باشد. برابر با عدد 0 مي باشد.
DRIVE_NO_ROOT_DIR: درايوي که معرفي شده است وجود ندارد. برابر با عدد 1 مي باشد.
DRIVE_REMOVABLE: برابر با مقدار عددي 2 مي باشد و مشخص مي کند که ديسک درايو مورد نظر از نوع قابل حمل مي باشد.
DRIVE_FIXED: برابر با مقدار عددي 3 مي باشد ومشخص مي کند که درايو مورد نظر از نوع ثابت است.
DRIVE_REMOTE: برابر با مقدار عددي 4 مي باشد و مشخص مي کند که درايو مورد نظر از نوع درايوشبکه مي باشد.
DRIVE_CDROM: برابر با مقدار عددي 5 مي باشد و مشخص مي کند که درايو مورد نظر از نوع CD_Drive مي باشد.
DRIVE_RAMDISK: برابر با مقدار عددي 6 بوده و مشخص مي کند درايو مورد نظر از نوع درايو هاي ساخته شده در RAM مي باشد.

مثال: خط زير مشخص کننده نوع درايو C مي باشد.
کد:
if GetDriveType('C:\') = DRIVE_FIXED then
ShowMessage ('It is a hard drive Partition');


يک مثال با سه تابع فوق ساخته ام که مي توانيد بوسيله لينک زير آنرا همراه Source Code اش DownLoad کنيد.


http://rightclick.ir/downloads/Api_Delphi_Test1_rar

_________________
ما مي توانيم...


بالا
 مشخصات  
 
نمايش پست ها از پيشين:  مرتب سازي بر اساس  
ارسال مبحث جديد پاسخ به مبحث [ 2 پست ] 

همه زمانها UTC + 3:30 ساعت هستند


چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون کاربران عضو شده و 0 مهمان


شما نمي توانيد مبحث جديدي در اين انجمن ايجاد کنيد
شما نمي توانيد به مباحث در اين انجمن پاسخ دهيد
شما نمي توانيد پست هاي خود را در اين انجمن ويرايش کنيد
شما نمي توانيد پست هاي خود را در اين انجمن حذف کنيد
شما نمي توانيد فايل هاي پيوست در اين انجمن ارسال کنيد

جستجو براي:
پرش به:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Persian Translation By : www.Maghsad.com