nistelrooy
Member
ای پی آی چيست؟
سلام.الان ميخوام در مورد توابع اي پي آي توضيح بدم كه اصلا چي هستن!با توابع خود ويژوال بيسيك كه آشنايي دارين؟
مثلMid MsgBox Format .هر تابع توي ويژوال بيسيك يك يا چند مقدار ميگيره و مقداري رو هم برگشت ميده و اعمالي رو هم انجام ميده.مثلا تابع CHR() يه عدد كد اسكي ميگيره و يه كاراكتر برميگردونه و يا Msgbox علاوه بر اينكه مقدار هايي ميگيره يه پيغام نشون ميده و در واقع مقدار برگشتي رو از كاربر ميگيره.
ويندوز هم اعمالشو بوسيله يه سري تابع انجام ميده كه اين توابع توي چند تا فايل هستن(توابع اي پي آي).هر كاري كه ويندوز ميكنه با اين توابع انجام ميده .مثل خاموش كردن كامپيوتر,كپي كردن فايل,بستن يك پنجره و ... .
تابع هايي كه ما از اونا توي ويژوال بيسيك استفاده ميكنيم هم از اين توابع استفاده ميكنن مثلا وقتي ما از تابع MsgBox توي ويبي استفاده ميكنيم در اصل ما به طور غير مستقيم داريم از تابع اي پي آي MessageBox استفاده ميكنيم!
ما بطور مستقيم ميتونيم از توابع اي پي آي توي برناممون استفاده كنيم بنابراين ما اكثر كارهايي كه ويندوز ميتونه بكنه رو ميتونيم انجام بديم فقط كافيه اسم تابع (و يك سري اصلاع ديگه) و روش كار باهاشو بلد باشيم و اونو توي برناممون فراخواني كنيم.
#حالا به چه درد ميخوره؟
ما با توابع اي پي آي كارهايي ميتونيم انجام بديم كه با توابع ويژوال بيسيك(يا زبان هاي ديگه برنامه نويسي) هرگز نميتونيم انجام بديم (مثلا جستجوي يك فايل و صدها كار ديگه)
و يا كارهايي كه انجام اونا نياز به كدهاي زيادي داره رو فقط با يك فراخواني ميتونيم انجام بديم.
و ... .
توابع (رابط برنامه نويسي كاربردي API (Application Programming Interface توي چند تا فايل هستن مثلا:
User32.dll, Kernel32.dll, Advapi32.dll, Gdi32.dll
براي استفاده اونا بايد اسم تابع , فايلي كه تابع در اونه , و ليست آرگومان هاشو بدونيم:
Public Declare Function [Name] lib "[lib]" Alias "[Alias]" (Args) as type
به جاي [name] اسم تابع , به جاي [lib] نام فايلي كه تابع داخلشه , به جاي [Alias] نام اصلي تابع و آرگومان ها هم داخل پرانتز قرار ميگرين.ديدين كه ما اينجا 2 تا اسم داشتيم.اسم تابع و اسم اصلي:
اگه ما تابع رو به اين صورت فراخواني كنيم اسم اولي اسم مستعار تابع قرار ميگيره و ما هر اسمي دلمون ميخواد ميتونيم بش بديم و اسم دوم اسم اصلي تابع حساب ميشه.اين براي مواردي بدرد ميخوره كه اسم اصلي تابع توي يه زبان برنامه نويسي قابل استفاده نباشه.مثلا اگه اسم تابع Print باشه ما نميتونيم بدون استفاده از اسم مستعار تابع رو فراخواني كنيم چون Print يه دستور توي ويبي هست!اگه نخواهيم از اسم مستعار استفاده كنيم فراخواني تابع به اين صورت ميشه:
Public Declare Fucntion [Name] lib "[lib] (Args) as type
در ضمن توي فراخواني ها به جاي Public ازPrivate هم ميتونيم استفاده كنيم كه بستگي به برناممون داره.(توي قسمت عمومي فرم بايد از Private استفاده كنيم).
ما براي بدست آوردن اين اطلاعات از برنامه API Viewer كه يكي از TOOLs هاي ويبي هست استفاده ميكنيم و نيازي به حفظ كردن اين اطلاعات نداريم.
براي اين كار از منوي AD-Ins گزينه Add-In Manager رو اينتخاب كنين.اون جا API Viewer رو انتخاب كنيد و OK كنيد.
حالا از توي همون منو برنامه مورد نظر رو انتخاب كنين.توي اين برنامه از منوي فايل گزينه Load text file… رو انتخاب كنيد و توي پنجره اي كه مياد فايل WIN32API.txt رو انتخاب كنيد.حالا توي Drop-Down ي كه جلوي API Type: هست 3 تا گزينه ميبينين.
Constents : كه ثابت هاي مورى نياز ما هستن كه بعدا توضيح ميدم.
Declares : كه ليست تابع ها هست كه فعلا مورد نظر ماست.
Types : كه ليست Type هايي هست كه ما براي كار با توابع اي پي آي به بعضي از اونا نياز داريم.
با انتخاب Declares توي ليست پايين اسامي تابع ها مياد كه البته اينا همه توابع نيستن ولي اكثر اونايي كه ما باشون كار ميكنيم رو شامل ميشن.با كليك روي اسم تابع Declare اون توي قسمت پايين مياد.
خوب! تا اينجا نحوه بدست آوردن اطلاعات توابع رو فهميديم حالا مونده نحوه استفاده.
Declare توابع رو بايد توي قسمت عمومي (General) فرم يا مدول قرار بديم(منظورم به طور ساده,بالا تر از كليه كد هاست)
منتظر بعدی ها باشید
سلام.الان ميخوام در مورد توابع اي پي آي توضيح بدم كه اصلا چي هستن!با توابع خود ويژوال بيسيك كه آشنايي دارين؟
مثلMid MsgBox Format .هر تابع توي ويژوال بيسيك يك يا چند مقدار ميگيره و مقداري رو هم برگشت ميده و اعمالي رو هم انجام ميده.مثلا تابع CHR() يه عدد كد اسكي ميگيره و يه كاراكتر برميگردونه و يا Msgbox علاوه بر اينكه مقدار هايي ميگيره يه پيغام نشون ميده و در واقع مقدار برگشتي رو از كاربر ميگيره.
ويندوز هم اعمالشو بوسيله يه سري تابع انجام ميده كه اين توابع توي چند تا فايل هستن(توابع اي پي آي).هر كاري كه ويندوز ميكنه با اين توابع انجام ميده .مثل خاموش كردن كامپيوتر,كپي كردن فايل,بستن يك پنجره و ... .
تابع هايي كه ما از اونا توي ويژوال بيسيك استفاده ميكنيم هم از اين توابع استفاده ميكنن مثلا وقتي ما از تابع MsgBox توي ويبي استفاده ميكنيم در اصل ما به طور غير مستقيم داريم از تابع اي پي آي MessageBox استفاده ميكنيم!
ما بطور مستقيم ميتونيم از توابع اي پي آي توي برناممون استفاده كنيم بنابراين ما اكثر كارهايي كه ويندوز ميتونه بكنه رو ميتونيم انجام بديم فقط كافيه اسم تابع (و يك سري اصلاع ديگه) و روش كار باهاشو بلد باشيم و اونو توي برناممون فراخواني كنيم.
#حالا به چه درد ميخوره؟
ما با توابع اي پي آي كارهايي ميتونيم انجام بديم كه با توابع ويژوال بيسيك(يا زبان هاي ديگه برنامه نويسي) هرگز نميتونيم انجام بديم (مثلا جستجوي يك فايل و صدها كار ديگه)
و يا كارهايي كه انجام اونا نياز به كدهاي زيادي داره رو فقط با يك فراخواني ميتونيم انجام بديم.
و ... .
توابع (رابط برنامه نويسي كاربردي API (Application Programming Interface توي چند تا فايل هستن مثلا:
User32.dll, Kernel32.dll, Advapi32.dll, Gdi32.dll
براي استفاده اونا بايد اسم تابع , فايلي كه تابع در اونه , و ليست آرگومان هاشو بدونيم:
Public Declare Function [Name] lib "[lib]" Alias "[Alias]" (Args) as type
به جاي [name] اسم تابع , به جاي [lib] نام فايلي كه تابع داخلشه , به جاي [Alias] نام اصلي تابع و آرگومان ها هم داخل پرانتز قرار ميگرين.ديدين كه ما اينجا 2 تا اسم داشتيم.اسم تابع و اسم اصلي:
اگه ما تابع رو به اين صورت فراخواني كنيم اسم اولي اسم مستعار تابع قرار ميگيره و ما هر اسمي دلمون ميخواد ميتونيم بش بديم و اسم دوم اسم اصلي تابع حساب ميشه.اين براي مواردي بدرد ميخوره كه اسم اصلي تابع توي يه زبان برنامه نويسي قابل استفاده نباشه.مثلا اگه اسم تابع Print باشه ما نميتونيم بدون استفاده از اسم مستعار تابع رو فراخواني كنيم چون Print يه دستور توي ويبي هست!اگه نخواهيم از اسم مستعار استفاده كنيم فراخواني تابع به اين صورت ميشه:
Public Declare Fucntion [Name] lib "[lib] (Args) as type
در ضمن توي فراخواني ها به جاي Public ازPrivate هم ميتونيم استفاده كنيم كه بستگي به برناممون داره.(توي قسمت عمومي فرم بايد از Private استفاده كنيم).
ما براي بدست آوردن اين اطلاعات از برنامه API Viewer كه يكي از TOOLs هاي ويبي هست استفاده ميكنيم و نيازي به حفظ كردن اين اطلاعات نداريم.
براي اين كار از منوي AD-Ins گزينه Add-In Manager رو اينتخاب كنين.اون جا API Viewer رو انتخاب كنيد و OK كنيد.
حالا از توي همون منو برنامه مورد نظر رو انتخاب كنين.توي اين برنامه از منوي فايل گزينه Load text file… رو انتخاب كنيد و توي پنجره اي كه مياد فايل WIN32API.txt رو انتخاب كنيد.حالا توي Drop-Down ي كه جلوي API Type: هست 3 تا گزينه ميبينين.
Constents : كه ثابت هاي مورى نياز ما هستن كه بعدا توضيح ميدم.
Declares : كه ليست تابع ها هست كه فعلا مورد نظر ماست.
Types : كه ليست Type هايي هست كه ما براي كار با توابع اي پي آي به بعضي از اونا نياز داريم.
با انتخاب Declares توي ليست پايين اسامي تابع ها مياد كه البته اينا همه توابع نيستن ولي اكثر اونايي كه ما باشون كار ميكنيم رو شامل ميشن.با كليك روي اسم تابع Declare اون توي قسمت پايين مياد.
خوب! تا اينجا نحوه بدست آوردن اطلاعات توابع رو فهميديم حالا مونده نحوه استفاده.
Declare توابع رو بايد توي قسمت عمومي (General) فرم يا مدول قرار بديم(منظورم به طور ساده,بالا تر از كليه كد هاست)
منتظر بعدی ها باشید









