PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش Api در VB



shirin71
08-06-2011, 07:43 PM
مقدمه


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 است .

shirin71
08-06-2011, 07:44 PM
جلسه دوم


تابع Open File :

از این تابع برای ساختن ، باز کردن و حذف کردن یک فایل می توان استفاده کرد ولی کار اصلی آن بدست آوردن دستگیره (Handle) یک فایل می باشد .

اصل تابع :
Public Declare Function OpenFile Lib "kernel32" Alias "OpenFile" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long

پارامتر ها :
lpFileName : نام و مسیر مورد نظر
lpReOpenBuff : این متغیر به ساختار OFSTRUCT برای درایفت اطلاعات فایل وقتی برای اولین بار باز می شود ، اشاره می کند .
Public Type OFSTRUCT
cBytes As Byte
fFixedDisk As Byte
nErrCode As Integer
Reserved1 As Integer
Reserved2 As Integer
szPathName(OFS_MAXPATHNAME) As Byte
End Type
- cBytes : ندازه ساختار .
- fFixedDisk : اگر این فیلد غیر صفر باشد یعنی فایل از هارد است
- nErrCode : اگر فایل باز نشود شماره خطا را درون خود نگه داری می کند
- Reserved1 و Reserved2 : رزرو شده است
- szPathName : این فیلد شامل مسیر و نام فایل می باشد
Public Const OFS_MAXPATHNAME = 128

wStyle : این پارامتر می تواند مقادیر زیر را داشته باشد :
OF_CREATE : با مقدار عددی &H1000 وقتی استفاده می شود که بخواهیم یک فایل ایجاد کنیم .
OF_DELETE : با مقدار عددی &H200 فایل مورد نظر را Delete می کند
OF_EXIST : با مقدار عددی &H4000 وقتی استفاده می کنیم که بخواهیم بفهمیم که فایل مورد نظر وجود دارد یا خیر اگر وجود داشته باشد مقدار 1 بر فردانده می شود
OF_PARSE : با مقدار عددی &H100 فقط ساختار OFSTRUCT را پر می کند
OF_READ : با مقدار عددی &H0 و فایل را فقط برای عملیات خواند باز می کند
OF_READWRITE : با مقدار عددی &H2 و فایل را برای خواندن و نوشتن باز می کند
OF_REOPEN : با مقدار عددی &H8000 فایل را با اطلاعاتی که در ساختار OFSTRUCT وجود دارد دوباره باز می کند .
OF_WRITE : با مقدار عددی &H1 و فایل را فقط برای نوشتن باز می کند

خروجی :
این تابع یک عدد است که دستگیره فایل می باشد به جز حالت EXIST .





تابع GetFileSize :

این تابع اندازه فایل را به بایت بر می گرداند .

اصل تابع :
Public Declare Function GetFileSize Lib "kernel32" Alias "GetFileSize" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long

پارامتر ها :
hFile : دستگیره فایل می باشد که با استفاده از تابع OpenFile می توان به دست آورد .
lpFileSizeHigh : در vb برابر صفر قرار می دهیم ( این پارامتر از نوع اشاره گر است )

خروجی :
اندازه فایل مورد نظر برگردانده می شود





تابع FindFirstFile :

این تابع برای پیدا کردن یک فایل با مشخصاتی که به آن داده می شه می گردد .

اصل تابع :
Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long

پارامتر ها :
lpFileName : این پارامتر از نوع String بوده و نام فایل مورد جستجو یا شرایط مورد نظر برای فایل را شامل می شه .
نام فایل : "c:\vb.exe"
شرایط پسوندی : "c:\*.exe"
lpFindFileData : این متغیر اشاره می کند به ساختار WIN32_FIND_DATA و هر فایلی که توسط تابع پیدا شود اطلاعات آن در این ساختار ذخیره می شود .
Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
dwFileAttributes : خصوصیات فایل پیدا شده را مشخص می کند . خصوصیاتی که در توابع GetFileAttributes و SetFileAttributes گفته شد .
ftCreationTime : این فیلد از نوع FILETIME می باشد و زمان ساخت فایل پیدا شده را مشخص می کنه .
ftLastAccessTime : این فیلد از نوع FILETIME می باشد و زمان آخرین دسترسی به فایل پیدا شده را مشخص می کنه .
ftLastWriteTime : این فیلد از نوع FILETIME می باشد و زمان آخرین باری که فایل پیدا شده نوشته شده را مشخص می کنه .
nFileSizeHigh : بالاترین اندازه فایل را به بایت را بر می گرداند .
nFileSizeLow : پایین ترین اندازه فایل را به بایت بر می گرداند .
cFileName : این پارامتر نام فایل پیدا شده را بر می گرداند . و MAX_PATH برابر 255 است .
cAlternate : این پارامتر مثل پارامتر بالایی با تفاوت اینکه فقط 8 کاراکتر نام فایل و 3 کاراکتر پسوند فایل می باشد .

خروجی :
اگر این تابع کار خود را به خوبی به اتمام برساند دستگیره یک فایل را بر می گرداند اگر تابع کار خود را به خوبی انجام ندهد مقدار 1- را بر می گرداند .

ساختار FILETIME :
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
توضیح خاصی ندارد ولی شاید بعدا بگم .





تابع FindNextFile :
این تابع فایل دیگری را با خصوصیاتی که در تابع FindFirstFile تعریف شده را پیدا می کنه .

اصل تابع :
Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long

پارامتر ها :
hFindFile : این پارامتر از نوع عددی است و دستگیره فایلی را که توسط تابع پیدا شده می باشد .
lpFindFileData : این پارامتر قبلا در تابع FindFirstFile گفته شده است .

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

shirin71
08-06-2011, 07:44 PM
جلسه سوم
تابع FindClose :

این تابع الگویی که توسط تابع FindFirstFile برای جستجو یک یا چند فایل تعیین شده است را از بین می برد .

اصل تابع :
Public Declare Function FindClose Lib "kernel32" Alias "FindClose" (ByVal hFindFile As Long) As Long

پارامتر ها :
hFindFile : این پارامتر از نوع عددی و دستگیره فایلی می باشد که با الگوی تابع FindFirstFile پیدا شده است .

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





تابع CreateDirectory :

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

اصل تابع :
Public Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long

پارامتر ها :
lpPathName : این پارامتر از نوع رشته می باشد و مسیر و نام فهرست جدید را مشخص می کند .
lpSecurityAttributes : این پارامتر از نوع ساختار SECURITY_ATTRIBUTES می باشد و برای تعین خصوصیات حفاظت فهرست به کار می رود .

Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

nLength : اندازه ساختار می باشد و تابع Len در VB مشخص می شود .
lpSecurityDescriptor :
bInheritHandle :

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






تابع RemoveDirectory :

از این تابع برای حذف یک فهرست استفاده می شود .

اصل تابع :
Public Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long

پارامتر ها :
lpPathName : این پارامتر از نوع رشته می باشد و مسیر و نام فهرستی که قرار است پاک شود .

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





تابع GetCurrentDirectory:

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

اصل تابع :
Public Declare Function GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectory" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

پارامتر ها :
nBufferLength : این پارامتر از نوع عدد بوده و طول فهرست فعال را مشخص می کند .
lpBuffer : از نوع رشته بوده و فهرست فعال درون این متغیر قرار می گیرد .

مثال :
dim s as string
s= string(255,0)
GetCurrentDirectory 255,s
msgbox s





تابع SetCurrentDirectory:

این تابع دقیقا بر عکس تابع Get CurrentDirectory است یعنی می توان مسیر یا فهرست فعال سیستم را تعیین کرد

اصل تابع :
Public Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

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

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

shirin71
08-06-2011, 07:44 PM
جلسه چهارم
تابع GetDiskFreeSpaceEx :

این تابع اطلاعاتی درباره حجم درایو ها می دهد ( فضای خالی و فضای کل )

اصل تابع :
Public Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal IpDirectoryName As String, IpFreeByteAvailableToCaller As Currency, IpTotalNumberOfBytes As Currency, IpTotalNumberOfFreeBytes As Currency) As Long

پارامتر ها :
IpDirectoryName : این پارامتر از نوع رشته بوده و نام دیسک درایو مورد نظر را مشخص می کند .
IpFreeByteAvailableToCaller : این پارامتر از نوع عددی بوده و مقدار فضای خالی قابل استفاده دیسک را به Byte بر می گرداند .
IpTotalNumberOfBytes : این پارامتر از نوع عددی بوده و فضای کل دیسک درایو را به Byte بر می گرداند .
IpTotalNumberOfFreeBytes : این پارامتر از نوع عددی بوده و فضای خالی دیسک درایو را به Byte بر می گرداند .

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





تابع GetDriveType :

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

اصل تابع :
Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long


پارامتر ها :
lnDrive : این پارامتر از نوع رشته بوده و درایو مورد نظر را مشخص می کند

خروجی :
خروجی این تابع مقادیر زیر می باشد :
DRIVE_REMOVABLE : برابر مقدار 2 می باشد و مشخص می کند دیسک درایو مورد نظر از نوع قابل حمل است (Floppy drive )
DRIVE_FIXED : برابر مقدار 3 بوده و مشخص می کند که درایو مورد نظر از نوع ثابت (Hard disk) است .
DRIVE_REMOTE : برابر مقدار 4 بوده و مشخص می کنه که درایو مورد نظر از نوع درایو شبکه است .
DRIVE_CDROM : برابر مقدار 5 مشخص می کنه که درایو مورد نظر از نوع CD-Drive است .
DRIVE_RAMDISK : برابر مقدار 6 و مشخص می کنه که درایو مورد نظر از نوع درایو های ساخته شده در Ram می باشد .





تابع GetLogicalDriveStrings :

این تابع دیسک درایو های موجود در سیستم را بر می گرداند .

اصل تابع :
Public Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long


پارامتر ها :
nBufferLength : این پارامتر از نوع عددی و مقدار فضای لازم را برای ذخیره سازی نام دیسک درایو مشخص می کند .
lpBuffer : این پارامتر از نوع رشته بوده و نام دیسک درایو در این پارامتر قرار می گیرد .

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

مثال :

Dim StrSave As String
Dim ret As Long
Dim i As Byte
Dim Drive As String

StrSave = String(255, Chr$(0))
ret = GetLogicalDriveStrings(255, StrSave)
For i = 1 To 100
If Left$(StrSave, InStr(1, StrSave, Chr$(0))) = Chr$(0) Then Exit For
Drive = Left$(StrSave, InStr(1, StrSave, Chr$(0)) - 1)
StrSave = Right$(StrSave, Len(StrSave) - InStr(1, StrSave, Chr$(0)))
Next i





تابع GetVolumeInformation :

این تابع اطلاعات مربوط به یک دیسک درایو از قبیل نوع سیستم ، بر چسب ، شماره سریال و ... را بر می گرداند .

اصل تابع :
Public Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long

پارامتر ها :
lpRootPathName : این پارامتر از نوع رشته بوده و نام درایو مورد نظر را مشخص می کند .
lpVolumeNameBuffer : این متغیر از نوع رشته بوده و بر چسب (Label ) دیسک درایو مورد نظر را بر می گرداند .
nVolumeNameSize : این متغیر از نوع عددی بوده و فضای لازم برای متغیری که شامل برچسب می باشد را مشخص می کند .
lpVolumeSerialNumber : این متغیر اشره گری به یک عددی می باشد که شماره سریال دیسک درایو می باشد .
lpMaximumComponentLength : این متغیر نیز از نوع عددی می باشد و حداکثر طول فایل سیستم را بر می گرداند .
lpFileSystemFlags : این متغیر عددی بوده و من چیز خاصی ازش نمی دونم .
lpFileSystemNameBuffer : این پارامتر از نوع رشته بوده و نام فایل سیستم را بر می گردونه .
nFileSystemNameSize : این پارامتر از نوع عددی بوده و مقدار لازم برای متغیر نام فایل سیستم را مشخص می کند .

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





تابع SetVolumeLabel :

از این تابع برای تعیین بر چسب ( Label ) یک دیسک درایو استفاده می شود .

اصل تابع :
Public Declare Function SetVolumeLabel Lib "kernel32" Alias "SetVolumeLabelA" (ByVal lpRootPathName As String, ByVal lpVolumeName As String) As Long

پارامتر ها :
lpRootPathName : این پارامتر از نوع رشته بوده و نام دیسک درایو مورد نظر را مشخص می کند .
lpVolumeName : این پارامتر از نوع رشته بوده و برچسب جدید دیسک گردان مورد نظر را مشخص می کند .

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

shirin71
08-06-2011, 07:45 PM
تابع FindWindow :

از این تابع برای یافتن دستگیره (Handle) ، پنجره استفاده می شود که عنوان (caption) آن و یا نام class آن را می دانیم .
اصل تابع :
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

پارامتر ها :
lpClassName : این پارامتر از نوع رشته بوده و نام کلاس یک پنجره را مشخص می کند .
lpWindowName : این پارامتر نیز از نوع رشته بوده و عنوان یک پنجره را مشخص می کند .

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

به عنوان مثال پنجره My computer ویندوز مشخصاتی به صورت زیر دارد :
IpclassName = “CabinetWClass”
IpWindowName = “My Computer”
لازم ه که بدونید که نام کلاس(class) یک پنجره را با استفاده از تابع GetClassName بدست آورد که در ادامه توضیح می دهم .


تابع CloseWindow :

از این تابع برخلاف نامی که داره برای کمینه کردن (Minimize) پنجره استفاده می شود .
اصل تابع :
Public Declare Function CloseWindow Lib "user32" (ByVal hWnd As Long) As boolean

پارامتر ها :
hWnd: این پارامتر از نوع عددی بوده و شامل دسگیره پنجره ای می باشد که قرار است Minimize شود .
خروجی :
خروجی این تابع بوده و اگر تابع کارش را به درستی انجام دهد مقدار True برگردانده می شود .


تابع DestroyWindow :

از این تابع برای خارج کردن یک پنجره از حافظه مورد استفاده قرار می گیرد .
اصل تابع :
Public Declare Function DestroyWindow Lib "user32" (ByVal hWnd As Long) As boolean

پارامتر ها :
hWnd: این پارامتر از نوع عددی بوده و شامل دسگیره پنجره ای می باشد که قرار است از حافظه خارج شود .
خروجی :
خروجی این تابع بوده و اگر تابع کارش را به درستی انجام دهد مقدار True برگردانده می شود .

مثال :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function CloseWindow Lib "user32" (ByVal hWnd As Long) As boolean
Private Sub Command1_Click()
Dim hwnd as long
hwnd = FindWindow ( vbNullString , “My Computer”)
CloseWindow hwnd
End Subدر این مثال دستگیره پنجره My Computer توسط تابع FindWindow پیدا می شه بعد اون پنجره رو کمینه می کنه به وسیله تابع CloseWindow .


تابع FlashWindow :

این تابع باعث می شود که قسمت Header پنجره مورد نظر شروع به چشمک زدن کند . اگر در حالت Minimize باشد ، پنجره در حالت Minimize و در TaskBar چشمک می زند .
اصل تابع :
Public Declare Function FlashWindow Lib "user32" (ByVal hWnd As Long, ByVal bInvert As Long) As Boolean

پارامتر ها :
hWnd : این پارامتر از نوع عددی بوده و شامل دسگیره پنجره ای می باشد که قرار است چشمک بزند .
bInvert : این پارامتر از نوع عددی بوده و اگر برابر با یک باشد چشمک می زند و اگر صفر باشد پنجره چشمک نمی زند .
خروجی :
خروجی این تابع بوده و اگر تابع کارش را به درستی انجام دهد مقدار True برگردانده می شود .
توجه : برای استفاده از این تابع باید آن را در داخل یک تایمر قرار دهید .

تابع FlashWindowEx :

کار این تابع دقیقا مثل FlashWindow است با این تفاوت که از یک ساختار برای این کار استفاده می کند و احتیاجی به تایمر ندارد .
اصل تابع :
Private Declare Function FlashWindowEx Lib "user32" (pfwi As FLASHWINFO) As Boolean
پارامتر ها :
pfwi : این پارامتر از نوع ساختار FLASHWINFO بوده که مشخصات چمک زدن را مشخص می کند
ساختار FLASHWINFO


Private Type FLASHWINFO
cbSize As Long
hwnd As Long
dwFlags As Long
uCount As Long
dwTimeout As Long
End TypecbSize : این پارامتر از نوع عددی بوده و شامل اندازه ساختار در حافظه می باشد برای این کار در VB از تابع Len استفاده می کنیم .
Hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره می باشد که باید چشمک بزند .
dwFlags : این پارامتر وضعیت چشمک زدن را مشخص می کند این پارامتر می تواند شامل یکی از موارد زیر باشد :
- FlashW_Stop : این Flagپنجره را به حالت اول بر می گرداند و با مقدار عددی صفر .
- FlashW_Caption : این Flag قسمت عنوان پنجره را چشمک زن می کند و با مقدار عددی &H1 .
- Flash_Tray : این Flag باعث می شه وقتی پنجره در حالت Minimize می باشد چشمک بزند و با مقدار عددی &H2 .
- FlashW_All : این پارامتر شامل هر دو Flag ، Flash_Tray و FlashW_Caption می باشد .
- FlashW_Timer : این Flag باعث می شه که پنجره شروع به چشمک زدن کند تا زمانی که Flag ، FlashW_Stop فراخوانی بشه و با مقدار عددی &H4 .
- FlashW_TimerOFG : این Flag باعث می شود که پنجره شروع به چشمک زدن کند تا زمانی که روی پنجره های دیگر قرار گیرد و با مقدار عددی &HC .
ucount : این پارامتر از نوع عددی بوده و تعداد دفعات چشمک زدن را مشخص می کند . اگر این پارامتر برابر صفر قرار گیرد تا زمانی که پنجره بسته نشود و یا Flag خاصی مورد استفاده نگیرد چشمک می زند .
dwTimeout : این پارامتر از نوع عددی بوده و مدت زمان فاصله میانی هر چشمک را به میلی ثانیه مشخص می کند . اگر برابر صفر قرار بگیرد از مقدار پیش فرض که برابر 500 می باشد استفاده می شود .
خروجی :
خروجی این تابع بوده و اگر تابع کارش را به درستی انجام دهد مقدار True برگردانده می شود در غیر این صورت مقدار false برگردانده می شود .

مثال :

Private Declare Function FlashWindowEx Lib "user32" (pfwi As FLASHWINFO) As Boolean

Private Type FLASHWINFO
cbSize As Long
hwnd As Long
dwFlags As Long
uCount As Long
dwTimeout As Long
End Type
FlashW_Stop = 0
FlashW_Caption = &H1
Flash_Tray = &H2
FlashW_All = (FlashW_Caption or Flash_Tray )
FlashW_Timer = &H4
FlashW_TimerOFG = &HC


Private Sub Command1_Click()
Dim Flash As FLASHWINFO
Flash.cbSize = Len(Flash)
Flash.dwFlags = FlashW_Timer Or (FlashW_All)
Flash.dwTimeout = 0
Flash.hwnd = Me.hwnd
Flash.uCount = 0

FlashWindowEx Flash
End Subاین مثال و امتحان کنید ببینید چه جوریه .

shirin71
08-06-2011, 07:46 PM
تابع EnableWindow :
این تابع یک پنجره را قابل استفاده و یا غیر قابل استفاده می کند .
اصل تابع :
Public Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
پارامتر ها :
Hwnd : این پارامتر از نوع عددی بوده و دستگیره پنجره ای را مشخص می کند که باید قابل استفاده یا غیر استفاده شود .
fEnable : این پارامتر نیز از نوع عددی بوده و اگر برابر 1 قرار بگیرد پنجره قابل استفاده و اگر برابر 0 باشد پنجره غیر قابل استفاده می شود .
خروجی :
خروجی این تابع از نوع عددی بوده و اگر تابع کار خود را به درستی انجام بدهد مقدار یک و در غیر این صورت مقدار 0 بر گردانده می شود .


تابع IsWindowEnable :
این تابع قابل اسفاده بودن یک پنجره را آزمایش می کند .
اصل تابع :
Public Declare Function IsWindowEnabled Lib "user32" Alias "IsWindowEnabled" (ByVal hwnd As Long) As Long
پارامتر ها :
Hwnd : این پارامتر از نوع عددی بوده و دستگیره پنجره ای را مشخص می کند که باید مورد آزمایش قرار بگیرد .
خروجی :
خروجی این تابع از نوع عددی بوده و اگر پنجره قابل استفاده باشد مقدار 1 بر گردانده می شود و در غیر این صورت مقدار 0 برگردانده می شود .


تابع GetWindowPlacement :
این تابع وضعیت نمایش پنجره از قبیل Normal و Minimize و Maximize و همچنین مکان و ابعاد پنجره را در هر وضعیت را بر می گرداند .
اصل تابع :
Public Declare Function GetWindowPlacement Lib "user32" Alias "GetWindowPlacement" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
پارامتر ها :
Hwnd : این پارامتر از نوع عددی بوده و دستگیره پنجره ای می باشد که می خواهیم وضعیت و مکان و ابعاد آن را بدست آوریم .
Lpwndpl : این پارامتر در حقیقت یک اشاره گر به ساختار WINDOWPLACEMENT می باشد که اطلاعات مربوط به پنجره در آن ذخیره می شود .
ساختار WINDOWPLACEMENT :

Public Type WINDOWPLACEMENT
Length As Long
flags As Long
showCmd As Long
ptMinPosition As POINTAPI
ptMaxPosition As POINTAPI
rcNormalPosition As Rect
End TypeLength : این فیلد از نوع عددی بوده و شامل اندازه ساختار در حافظه می باشد در vb از تابع Len استفاده می کنیم .
Flags : این فیلد وضعیت بازگشت پنجره را مشخص می کند و می تواند شامل دو مقدار زیر باشد :
- WPF_RESTORETOMAXIMIZED : مشخص می کند وقتی پنجره بخواهد به حالت قبلی برگردد به Maximize تغییر حالت می دهد و با مقدار عددی &H2 .
- WPF_SETMINPOSITION : زمانی که پنجره به حالت قبلی برگردد به Minimize تغییر حالت می دهد و با مقدار عددی &H1 .
showCmd : این پارامتر وضعیت پنجره را مشخص می کند و این وضعیت می تواند مقادیری داشته باشد که در تابع بعدی توضیح می دهم .
ptMinPosition : این ساختار از نوع PointApi می باشد و در حقیقت مختصات مکانی پنجره را در حالت Minimize برمی گرداند .
ptMaxPosition : این ساختار از نوع PointApi می باشد و در حقیقت مختصات مکانی پنجره را در حالت Maximize برمی گرداند .
rcNormalPosition : این پارامتر از نوع ساختار RECT می باشد و مختصات ابعادی پنجره را بر می گرداند .
ساختار PointApi : احتیاجی به توضیح ندارد

Public Type POINTAPI
x As Long
y As Long
End Typeساختار RECT : این ساختار هم از اسمهاش پیداست احتیاجی به توضیح نیست

Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Typeخروجی :
خروجی این تابع از نوع عددی بوده و اگر پنجره قابل استفاده باشد مقدار 1 بر گردانده می شود و در غیر این صورت مقدار 0 برگردانده می شود .


تابع ShowWindow :
این تابع وضعیت نمایش یک پنجره را مشخص می کند .
اصل تابع :
Public Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
پارامتر ها :
Hwnd : این پارامتر از نوع عددی بوده و دستگیره پنجره ای را مشخص می کند که قرار است وضعیت آن را مشخص کنیم .
nCmdShow : این پارامتر نیز از نوع عددی بوده و مشخص کننده وضعیت پنجره مورد نظر می باشد این پارامتر می تواند مقادیر زیر را دریافت کند :
- SW_HIDE : این Flag پنجره را از درون Taskbar ویندوز محو می کنه و سایر پنجره ها را مشخص می کند و با مقدار عددی 0 .
- SW_MAXIMIZE : این Flag پنجره را به حالت Maximize تغییر و ضعیت می دهد و با مقدار عددی 3 .
- SW_MINIMIZE : این Flag پنجره را به حالت Minimize تغییر وضعیت می دهد این Flag دقیقا برابر تابع CloseWindow است و با مقدار عددی 6 .
- SW_RESTORE : این Flag پنجره را از وضعیت Minimize یا Maximize به وضعیت Normal بر می گرداند و با مقدار عددی 9 .
- SW_SHOW : این Flag پنجره را در وضعیت صحیح خود نمایش می دهد برعکس Flag ، SW_HIDW و با مقدار عددی 5 .
- SW_SHOWDEFAULT : این Flag پنجره را در حالت پیش فرض خو نمایش می دهد و با مقدار عددی 10 .
- SW_SHOWMAXIMIZED : این Flag پنجره را در وضعیت Maximize نمایش می دهد و پنجره را فعال می کند و با مقدار عددی 3 .
- SW_SHOWMINIMIZED : این Flag پنجره را در وضعیت Minimize نمایش می دهد و پنجره را فعال می کند و با مقدار عددی 2 .
- SW_SHOWNORMAL : این Flag پنجره را در وضعیت Normal نمایش می دهد و پنجره را فعال می کند و با مقدار عددی 1 .
- SW_SHOWMINNOACTIVE : این Flag پنجره را در وضعیت Minimize نمایش می دهد و پنجره را فعال نمی کند و با مقدار عددی 7 .
- SW_SHOWNOACTIVATE : این Flag پنجره را در وضعیت صحیح خود نمایش می دهد ولی پنجره را فعال نمی کند و با مقدار عددی 4 .
- SW_SHOWNA : این Flag پنجره را در وضعیت صحیح خود نمایش می دهد ولی پنجره را فعال نمی کند و اگر فعال باشد فعال و اگر فعال نباشد غیرفعال نمایش می دهد و با مقدار عددی 8 .
خروجی :
خروجی این تابع از نوع عددی بوده و اگر تابع کار خود را به درستی انجام بدهد مقدار یک و در غیر این صورت مقدار 0 بر گردانده می شود .


تابع SetWindowPlacement :
کار این تابع دقیقا بر عکس تابع GetWindowPlacement عمل می کند .
اصل تابع :
Public Declare Function SetWindowPlacement Lib "user32" Alias "SetWindowPlacement" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
پارامتر ها :
Hwnd : این پارامتر از نوع عددی بوده و دستگیره پنجره ای می باشد که می خواهیم وضعیت و مکان و ابعاد آن را تغییر بدهیم .
Lpwndpl : این پارامتر در حقیقت یک اشاره گر به ساختار WINDOWPLACEMENT می باشد که متغییر های آن باید پیش از فراخوانی تابع مقدار دهی شده باشد .
خروجی :
خروجی این تابع از نوع عددی بوده و اگر پنجره قابل استفاده باشد مقدار 1 بر گردانده می شود و در غیر این صورت مقدار 0 برگردانده می شود .

مثال :



Private Type POINTAPI
x As Long
y As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type WINDOWPLACEMENT
Length As Long
flags As Long
showCmd As Long
ptMinPosition As POINTAPI
ptMaxPosition As POINTAPI
rcNormalPosition As RECT
End Type
Private Declare Function GetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
Private Declare Function SetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long

Dim Wp As WINDOWPLACEMENT
Dim ScrR As RECT, DesR As RECT

Private Sub Command1_Click()
GetWindowPlacement Me.hwnd, Wp
ScrR = Wp.rcNormalPosition

List1.Clear
List1.AddItem "FormLeft : " + CStr(ScrR.Left)
List1.AddItem "FormRight : " + CStr(ScrR.Right)
List1.AddItem "FormTop : " + CStr(ScrR.Top)
List1.AddItem "FormBottom : " + CStr(ScrR.Bottom)


End Sub

Private Sub Command2_Click()
Wp.Length = Len(Wp)
DesR.Left = 260
DesR.Right = 100
DesR.Top = 100
DesR.Bottom = 200
Wp.rcNormalPosition = DesR
Wp.showCmd = 5
SetWindowPlacement Me.hwnd, Wp

End Sub
رفقا به اندازه کافی فکر کنم توضیح دادم که دیگه این مثال و توضیح ندهم خودتون امتحان کنید .