مقدمه


API رو می توان قلب ویندوز فرض کرد . زیرا ما هر کاری که در ویندوز انجام می دهیم در واقع یکی از تابع های َAPI فراخوانی می شود .


برای مثال وقتی شما در محیط برنامه نویسی vb وارد شده و یا هر محیط دیگری پروژه جدیدی را آغاز می کنید و فرم اولیه را روی صفحه آورده و آماده طراحی می شوید در واقع استفاده از Api را آغاز کرده اید در حقیقت در همین لحظه تابع Create Window فراخوانی شده و فرم مزبور در مقابل شما قرار می گیرد .

Api شاید به نظر پیچیده به نظر برسه با بیش از 1000 تابع ولی یک امکان بسیار قوی است .

توابع Api در یکسری فایل ها با پسوند DLL قرار دارند . DLL مخفف ( Dynamic Linked Library ) یا همان کتابخانه پیوندی پویا می باشد که می تواند شامل یکسری کد و داده ( مثل تصویر ، صوت و ... ) باشد .

مهمترین DLL ها kernel32.dll , user32.dll , shell32.dll و ... می باشد .


طریقه استفاده از Api

| Public | Private ] Declare Function name Lib "libname"[Alias "aliasname"](arglist) As type


Declare Function : یعنی شما قصد استفاده از روال تابع Function را دارید
name : نام تابع مورد نظر
libname : نام Dll مورد نظر
aliasname : این قسمت اختیاری است . وقتی استفاده می شود که در زبان برنامه نویسی نام اصلی این تابع وجود داشته باشد .
arglist : این قسمت هم می تونه اختیاری باشه از این قسمت برای فرستادن پارامتر ها استفاده می شه .

البته به چند نوع دیگه هم می شه تعریف کرد .


اگه این تعریف رو دیده باشید حتما می گید خیلی سخته ولی یه راه آسون بهتون می گم که بیشتر API ها در آن موجود است . می توانید از برنامه کاربردی API Text Viewer استفاده نمایید که در پوشه نصب vb موجود است .


جلسه اول


تابع Copy File :

این تابع یک فایل را در محل مورد نظر کپی می کنه .

Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

lpExistingFileName : این پارامتر یک متغیر از نوع String است که مسیر و نام فایل مبدا یعنی فایلی که قرار است کپی شه .
lpNewFileName : این پارامتر یک متغیر از نوع String است که مسیر و نام فایل مقصد را مشخص می کنه .
bFailIfExists : این پارامتر از نوع Boolean ، که اگر این پارامتر True باشه و فایل مقصد قبلا وجود داشته باشه کار تابع نیمه کاره می مونه ولی اگه False باشه فایل قبلی Over Write می شه .

خروجی این تابع اگه Ture یا یک باشه یعنی تابع کار خودشو به درستی انجام داده و اگه False یا صفر باشه کار تابع نیمه تمام مانده است .




تابع Delete File :


با استفاده از این تابع می توان یک فایل را از روی دیسک پاک کرد .

اصل تابع :
Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long

پارامتر ها :
lpFileName : این تابع دارای یک پارامتر است که از نوع String می باشد و مسیر و نام فایلی که قرار است از روی دیسک پاک شود را مشخص می کند .

خروجی :
از نوع Boolean بوده و اگر یک یا True باشه یعنی تابع به درستی کار خود را انجام داده است .




تابع Move File :

از این تابع برای انتقال یک فایل از یک مسیر به یک مسیر دیگه استفاده می شه .

اصل تابع :
Public Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long

پارامتر ها :
lpExistingFileName : نوع String ، مسیر و نام فایل مبدا
lpNewFileName : نوع String ، مسیر و نام فایل مقصد
خروجی :
نوع Boolean ، یک یا True ---> کار تابع انجام شده است .
صفر یا False ---> کار تابع انجام نشده است .




تابع GetFileAttributes :

این تابع خصوصیات فایل از قبیل Readonly و System و... را برمی گرداند .

اصل تابع :
Public Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long

پارامتر ها :
lpFileName : نوع String ، مسیر و نام فایل .

خروجی :
تابع می تواند چند حالت زیر را داشته باشد :
1). FILE_ATTRIBUTE_ARCHIVE : مشخص می کند که فایل یا فهرست خاصیت ARCHIVE دارد و مقدار آن برابر &H20 است
2). FILE_ATTRIBUTE_COMPRESSED : مشخص می کنه که فایل فشرده است و مقدار آن برابر &H800 است .
3). FILE_ATTRIBUTE_DIRECTORY : مشخص می کنه که مسیری که در lpFileName داده شده یک فهرست است و مقدار آن برابر &H10 است .
4). FILE_ATTRIBUTE_HIDDEN : مشخص می کنه که فایل خاصیت HIDDEN دارد و مقدار آن برابر &H2 است .
5). FILE_ATTRIBUTE_NORMAL : مشخص می کنه که فایل خاصیت NORMAL دارد و مقدار آن برابر &H80 است .
6). FILE_ATTRIBUTE_READONLY : مشخص می کنه که فایل خاصیت READONLY دارد و مقدار آن برابر &H1 است .
7). FILE_ATTRIBUTE_SYSTEM : مشخص می کنه که فایل خاصیت SYSTEM دارد و مقدار آن برابر &H4 است .
8). FILE_ATTRIBUTE_TEMPORARY : مشخص می کنه که فایل از نوع Temp است و مقدار آن برابر &H100 است .

گزینه های بالا می توان به صورت ثابت تعریف کرد برای مثال : Const FILE_ATTRIBUTE_HIDDEN = &H2





تابع SetFileAttributes :


این تابع دقیقا برعکس تابع قبلی عمل می کنه یعنی می توان خاصیت های فایل را تغییر داد .

اصل تابع :
Public Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long

پارامتر ها :
lpFileName : نوع String ، مسیر و نام فایل .
dwFileAttributes : از نوع Long ، دقیقا همان مقدارهایی خروجی تابع GetFileAttributes است که عبارتند از :

1). FILE_ATTRIBUTE_ARCHIVE : مشخص می کند که فایل یا فهرست خاصیت ARCHIVE دارد و مقدار آن برابر &H20 است
2). FILE_ATTRIBUTE_COMPRESSED : مشخص می کنه که فایل فشرده است و مقدار آن برابر &H800 است .
3). FILE_ATTRIBUTE_DIRECTORY : مشخص می کنه که مسیری که در lpFileName داده شده یک فهرست است و مقدار آن برابر &H10 است .
4). FILE_ATTRIBUTE_HIDDEN : مشخص می کنه که فایل خاصیت HIDDEN دارد و مقدار آن برابر &H2 است .
5). FILE_ATTRIBUTE_NORMAL : مشخص می کنه که فایل خاصیت NORMAL دارد و مقدار آن برابر &H80 است .
6). FILE_ATTRIBUTE_READONLY : مشخص می کنه که فایل خاصیت READONLY دارد و مقدار آن برابر &H1 است .
7). FILE_ATTRIBUTE_SYSTEM : مشخص می کنه که فایل خاصیت SYSTEM دارد و مقدار آن برابر &H4 است .
8). FILE_ATTRIBUTE_TEMPORARY : مشخص می کنه که فایل از نوع Temp است و مقدار آن برابر &H100 است .