[size=xx-large]هاي ویندوز API[/size]
[size=medium]
هاي ویندوز و چگونگی استفاده از آنها API امروز قصد دارم در مورد ویژوال بیسیک بطور خلاصه توضیح دهم و همچنین دو مثال پراستفاده را نیز در این زمینه بیان کنم که عبارتند از چگونگی پخش
و ساخت یک تایمر با دقت بالا : Wav فایلهاي
Application مخفف API واژه : Windows API 1 - آشنایی با
هاي ویندوز مجموعه اي API . می باشد Programming Interface
از توابع از پیش آماده موجود در سیستم عامل هستند که شما می توانیدآنها را در برنامه هاي خود فراخوانی کنید . این توابع در چندین کتابخانه ویندوز ذخیره شده اند . براي دسترسی به این توابع در ویژوال DLL
کنید . براي مثال : declare بیسیک ابتدا باید آنها را برنامه خود
Declare Function sndPlaySound Lib "winmm.dll" Alias
sndPlaySoundA" (ByVal lpszSoundName As String, "
Long ByVal uFlags As Long) As
sndPlaySound از تابع Declare همانطور که می بینید مثال فوق یک موجود است . کلمه Winmm.dll می باشد که این تابع در کتابخانه
دارد . سایر بخشها dll نشان می دهد که این تابع نام دیگري در Alias
مربوط به تعریف پارامترهاي تابع می باشند که در مورد مثال فوق ، این
دارد . Long تابع دو پارامتر ورودي و یک خروجی از نوع
در برنامه می توانید از آن استفاده نمائید . API کردن Delare پس از
استفاده Wav تابعی که براي پخش فایلهاي : Wav 2 - پخش فایلهاي است که در بالا با آن آشنا شدید . sndPlaySound می شود تابع
uFlags و پارامتر Wav نام و مسیر فایل lpzSoundName پارامتر
چگونگی پخش فایل را مشخص می کند . مقادیر ممکن این پارامتر
عبارتند از :
پخش شود که آنرا Wav اجازه می دهد طوري فایل : SND_ASYNC -
تان را هر Wav بتوان وقفه داد . بعبارت دیگر قادر خواهید بود فایل
زمان که بخواهید پخش کنید و مطمئن باشید که حتما شنیده می شود .
را بطور ممتد پخش می کند . Wav فایل : SND_LOOP -
پیدا نشود صداي دیگري Wav اگر فایل : SND_NODEFAULT -
ویندوز ) default پخش نخواهد شد ( مثلا برخی صداهاي
کنترل به برنامه داده نمی Wav در طول پخش فایل : SND_SYNC -
اي را در پس زمینه Wav شود . این پارامتر در زمانیکه می خواهید فایل
برنامه تان پخش کنید مناسب نمی باشد . اي قبلا در حال پخش باشد ، فایل Wav اگر فایل : SND_NOSTOP -
شما آنرا دچار وقفه نمی کند . از این پارامتر زمانی استفاده می Wav
مان هیچوقت در وسط کار قطع نشود . Wav شود که بخواهیم فایل
Or اگر بخواهید از بیش از یکی از این پارامترها استفاده کنید توسط
آنها را ترکیب نمائید مثال :
or ding.wav", SND_ASYNC\" & sndPlaySound App.path
SND_LOOP
نکته : براي استفاده از توابع صوتی پیچیده تر بایستی از
می باشد استفاده کنید . در DirectX که یکی از اجزاي DirectSound
بعدا صحبت خواهم کرد . DirectSound مورد
3 - ساخت یک تایمر با دقت بالا : شاید تا بحال از کنترل تایمر موجود در نوار ابزار ویژوال بیسیک استفاده کرده باشید . این تایمر داراي دقت حدود 55 میلی ثانیه است . براي دستیابی به زمانهاي با دقت بالاتر این کنترل مفید نخواهد بود .
Kernel32.dll موجود در کتابخانه API یک GetTickCount تابع است . این تابع طول زمانی را که سیستم شروع به کار کرده است را برحسب میلی ثانیه برمی گرداند :
() "Private Declare Function GetTickCount Lib "kernel32
As Long
براي بررسی طی شدن یک مدت زمانی خاص شما ابتدا باید مقدار این قرار دهید سپس در یک TempTime تابع را در یک متغیر کمکی مثل جدید و زمان GetTickCount باید اختلاف زمان Do-Loop حلقه را با مقدار زمانی که می خواهید سپري شود مقایسه کنید : TempTime
TempTime = GetTickCount()x
GetTickCount() - TempTime > Do While DesiredTime
'Do some things
Loop
توسط کد بالا می توان یک عملیات خاص را براي یک مدت زمانی مشخص اجرا کرد .
کد زیر نشان می دهد که چگونه می توان دستورات خاصی را در فواصل زمانی خاص اجرار کرد :
ExitFunction = False
GetTickCount()x = TempTime
Do While not(ExitFunction)x
GetTickCount() - TempTime then > If DesiredTime
'Reset the temporary variable
GetTickCount()x = TempTime
'Do some things
End If
Loop
برنامه benchmark می توان براي GetTickCount همچنین از تابع ها استفاده کرد . بعبارت دیگر می توان زمان اجراي یکسري دستورات خاص را بدست آورد .
[/size]