تبلیغات


برنامه نویسی $هک&آموزش&کتاب - آموزش کار های جالب با ویژوال یسیک


برنامه نویسی $هک&آموزش&کتاب
 
ایران سرای من

محل درج آگهی و تبلیغات
 

آموزش کار های جالب با ویژوال یسیک
یک جلوه گرافیكی فوق العاده جالب با عکس

 


با این برنامه می تونین دو تا تصویر رو روی هم بندازید و حركت بدین
تصاویرتون باید JPG باشه و بزرگ نباشه.دستورات زیر رو در قسمت General فرم بنویسید

Dim Image1 As IPictureDisp
Dim Image2 As IPictureDisp

Private Type Location
X As Integer
Y As Integer
End Type

Dim Image1Move As Integer
Dim Image2MoveX As Integer
Dim Image2MoveY As Integer
Dim Image1Local As Location
Dim Image2Local As Location
Const Operation = vbSrcAnd

دو تا عكس رو در مسیر برنامه كپی كنید اسمشون هم 1 و 2 باشه

كد زیر برای Form_Load هست

("Set Image1 = LoadPicture(App.Path & "\Image1.jpg
("Set Image2 = LoadPicture(App.Path & "\Image2.jpg
With me
.Show
Refresh.
.AutoRedraw = True
.ScaleMode = vbPixels
End With

Image1Move = 1
Image2MoveX = 3
Image2MoveY = 3

Do
me.PaintPicture Image1, Image1Local.X, Image1Local.Y
me.PaintPicture Image1, Image1Local.X + me.ScaleWidth, Image1Local.Y
me.PaintPicture Image1, Image1Local.X, Image1Local.Y + me.ScaleHeight
me.PaintPicture Image1, Image1Local.X + me.ScaleWidth, Image1Local.Y + me.ScaleHeight

me.PaintPicture Image2, Image2Local.X, Image2Local.Y, , , , , , , Operation
me.PaintPicture Image2, Image2Local.X + me.ScaleWidth, Image2Local.Y, , , , , , , Operation
me.PaintPicture Image2, Image2Local.X, Image2Local.Y + me.ScaleHeight, , , , , , , Operation
me.PaintPicture Image2, Image2Local.X + me.ScaleWidth, Image2Local.Y + me.ScaleHeight, , , , , , , Operation

With Image1Local
.X = .X - Image1Move
.Y = .Y - Image1Move

If .X < -me.ScaleWidth Then .X = 0
If .Y < -me.ScaleHeight Then .Y = 0
End With

With Image2Local
.X = .X - Image2MoveX
.Y = .Y - Image2MoveY

If .X < -me.ScaleWidth Then .X = 0
If .Y < -me.ScaleHeight Then .Y = 0

If .X + me.ScaleWidth > me.ScaleWidth Then .X = -me.ScaleWidth
If .Y + me.ScaleHeight > me.ScaleHeight Then .Y = -me.ScaleWidth
End With

DoEvents
Loop

برای اینكه دستورات بالا داخل یک حلقه بی پایان قرار می گیره باید در رویداد كلیك فرم بنویسید
End

فرم رو زیاد بزرگ نكنید سعی كنید تصویرها هم اندازه باشند و فرم هم اندازه تصویر ها
برای اینكه در حركت عكس ها تنوع ایجاد كنیم در رویداد MouseMove فرم دستور زیر رو بنویسید

Image2MoveX = Int(me.ScaleWidth \ 2 - X) \ 10
Image2MoveY = Int(me.ScaleWidth \ 2 - Y) \ 10

موفق باشید

*****************************
تا حالا دیدین کسی قلب خودش رو جلوی دیگران در بیاره
اما دیوید بلین جادوگر بزرگ امریکایی این کار رو کرد
http://www.ljava2.persiangig.com/audio/blaine.asf

برنامه ای كه با آن می توان فایل اجرایی را باز كرد و سورسش را دید
http://www.hot.ee/microtools4u/Versions/SourceEditor.zip
کرکش
http://ar.yahoo.com/*http://64.233.98.43/e-Lunatic/15.08.Source.Editor.v2.26.zip

یك فرم MDI پیشرفته
http://www.pscode.com/vb/scripts/ShowZip.asp?lngWId=1&lngCodeId=57502&strZipAccessCode=tp%2F%5B575020912

یک برنامه جالب برای بزرگ نمایی روی Desktop
http://download.mehrzad.net/Default.aspx?ID=2

*****************************
برگرفته از وبلاگ دوست عزیزم ناصر به نشانی http://www.nasservb.blogfa.com/

*****************************

مخفی كردن منوی Start
برای مخفی كردن منوی Start به یك تابع از كتابخانه user32.dll احتیاج دارید

Option Explicit

Dim hwnd1 As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Const SWP_HIDEWINDOW = &H80
Const SWP_SHOWWINDOW = &H40

حالا باید دو تا دكمه برای مخفی و آشكار كردن منوی Startبه فرم اضافه كنید

كد مخفی كردن Start
Hwnd1=FindWindow("Shell_traywnd","")
call SetWindowPos(Hwnd1,0,0,0,0,0,SWP_HIDEWINDOW)

كد ظاهر كردن Start
call SetWindowPos(Hwnd1,0,0,0,0,0,SWP_SHOWWINDOW)

*****************************
آیكون یك برنامه رو از كالبدش كشید بیرون و به صورت فایل آیكون ذخیره كرد
این آموزش از سری آموزشی كتابخانه قدرتمند Shell هست
یك ماژول به پروژه اضافه كنید و كد زیر را داخلش كپی كنید

Public Const MAX_PATH = 260
Public Const SHGFI_DISPLAYNAME = &H200
Public Const SHGFI_EXETYPE = &H2000
Public Const SHGFI_SYSICONINDEX = &H4000 ' System icon index
Public Const SHGFI_LARGEICON = &H0 ' Large icon
Public Const SHGFI_SMALLICON = &H1 ' Small icon
Public Const ILD_TRANSPARENT = &H1 ' Display transparent
Public Const SHGFI_SHELLICONSIZE = &H4
Public Const SHGFI_TYPENAME = &H400
Public Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME _
Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX _
Or SHGFI_DISPLAYNAME Or SHGFI_EXETYPE

Public Type SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
End Type

Public Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" _
(ByVal pszPath As String, _
ByVal dwFileAttributes As Long, _
psfi As SHFILEINFO, _
ByVal cbSizeFileInfo As Long, _
ByVal uFlags As Long) As Long

Public Declare Function ImageList_Draw Lib "comctl32.dll" _
(ByVal himl&, ByVal i&, ByVal hDCDest& _
,ByVal x&, ByVal y&, ByVal flags&) As Long
Public shinfo As SHFILEINFO

یه دكمه به برنامه اضافه كنید و یك texbox و با دو تا picbox و دو تا برچسب
و اینکه نام picbox ها رو image1 و image2 قرار بدهید
آدرس فایل اجرایی را داخل texbox بنویسید و در كد كلیك دكمه كد زیر را بنویسید

Dim hImgSmall As Long
Dim hImgLarge As Long
Dim FileName As String
Dim r As Long

FileName$ = Text1.Text
hImgSmall& = SHGetFileInfo(FileName$, 0&, shinfo, Len(shinfo), BASIC_SHGFI_FLAGS Or SHGFI_SMALLICON)
hImgLarge& = SHGetFileInfo(FileName$, 0&, shinfo, Len(shinfo), BASIC_SHGFI_FLAGS Or SHGFI_LARGEICON)
Label1.Caption = Left$(shinfo.szDisplayName, InStr(shinfo.szDisplayName, Chr$(0)) - 1)
Label2.Caption = Left$(shinfo.szTypeName, InStr(shinfo.szTypeName, Chr$(0)) - 1)

image1.Picture = LoadPicture()
image2.Picture = LoadPicture()

r& = ImageList_Draw(hImgSmall&, shinfo.iIcon, image1.hDC, 0, 0, ILD_TRANSPARENT)
r& = ImageList_Draw(hImgLarge&, shinfo.iIcon, image2.hDC, 0, 0, ILD_TRANSPARENT)

*****************************
چطور می شه دكمه بستن پنجره در گوشه فرم رو غیر فعال كرد
شاید غیر فعال كرد دكمه های تمام صفحه و كمینه رو بلد باشین ولی
دیگه فرم خاصیت غیر فعال كردن دكمه close رو نداره مگه كنترل بوكس فرم رو
برداریم یا اصلآ فرم رو از نوع بدون منوی بالا وتیتر انتخاب كنیم
ولی با این كد می تونین با داشتن تمام كنترل ها فقط دكمه كلوز رو غیر فعال كنین
تابع زیر رو تعریف كنید

Public Const SC_CLOSE = &HF060
Public Const MF_BYCOMMAND = &H0
Public Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

Public Sub DisableXbutton(ByVal frmHwnd As Long)
Dim hMenu As Long
hMenu = GetSystemMenu(frmHwnd, 0&)
If hMenu Then
Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
DrawMenuBar (frmHwnd)
End If
End Sub

حالا كد زیر رو داخل Form_Load بنویسید

DisableXbutton (Me.hwnd)

*****************************
این تابع می تونه كلید های CRTL_ALT_Delete رو غیر فعال كنه

البته حتما باید سریع به حالت قبل برگردونید چون موندن این حالت زیاد جالب نیست

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _
(ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Const SPI_SCREENSAVERRUNNING = 97

حالا دو تا كامند به فرم اضافه كنید به اسم های Desabled و Enabled

كد دكمه غیر فعال كردن

Private Sub Disabled_Click()
Dim Ret As Long
Dim pOld As Boolean
Ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)
End Sub

كد فعال سازی این كلید ها بهتر است این كدها را در Unload فرم نیز فراخوانی كنید

Private Sub EnableD_Click()
Dim Ret As Long
Dim pOld As Boolean
Ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, pOld, 0)
End Sub

*****************************
این كد رو هم توی پروژه دیگه تست كنید - تاریخ فارسی

MsgBox WeekdayName(Weekday(Date), False, vbSunday) & ", " & VBA.MonthName(VBA.Month(Date)) & " " & Day(Date) & ", " & VBA.Year(Date), vbOKOnly + vbInformation, "The date"

*****************************
با این تابع می تونید آیكون های روی دسكتاپ رو مخفی و ظاهر كنید

اول فراخوانی توابع

Option Explicit
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

بعد سه تا كامند برای ظاهر كردن آیكون ها مخفی كردن آنها و خروج از فرم بنویسید

كد هر كدام اینطور است

Private Sub cmdDHide_Click()
Dim hWnd As Long
hWnd = FindWindowEx(0&, 0&, "Progman", vbNullString)
ShowWindow hWnd, 0
End Sub'--------------------------------
Private Sub cmdDShow_Click()
Dim hWnd As Long
hWnd = FindWindowEx(0&, 0&, "Progman", vbNullString)
ShowWindow hWnd, 5
End Sub'---------------------------------
Private Sub cmdExit_Click()
Me.Hide
End
End Sub'-------------------------------------

*****************************
برگرفته شده از وبلاگ دوست عزیزم ناصر به نشانی http://www.nasservb.blogfa.com/

*****************************

*****************************
اموزش یک کار جالب با فرم ها
تنها با دو خط كد میتونید جلوه ای رو بوجود بیارید كه فكرشم نمی كردید. یك فرم رو توی یك فرم دیگه جابدید. استفاده های زیادی میشه ازش كرد. مثلا ساخت نوار ابزارهایی مثل اونی كه فتوشاپ داره. راجع بهش فكر كنید
این هم كدش

Private Declare Function SetParent Lib "user32" ( _
ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Sub Form_Load()
SetParent Form2.hWnd, hWnd
Form2.Show
End Sub

*****************************
چطور می توان كادر Brows Folder ویندوز رو ظا هر كرد
این كادر استفاده ی بسیار زیادی در برنامه های كاربردی داره.وموقعی استفاده می شه كه كار بر باید یك پوشه رو (مثلآ برای نصب برنامه )انتخاب كنه
یك ماژول ایجاد كنید و كد های زبر رابنویسید

'------Typing New data For BrowsForm---------------------
Public Type BrowseInfo
hWndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type

'---------------Conset For BrowsForm--------------------
Public Const BIF_RETURNONLYFSDIRS = 1
Public Const BIF_DONTGOBELOWDOMAIN = 2
Public Const MAX_PATH = 260

'-----------------------Declareing API------------------------------------------
Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long

حال در جایی كه می خواهید كادر ظاهر شود كد زیر رابنویسید

Dim lpIDList As Long
Dim sBuffer As String
Dim szTitle As String
Dim tBrowseInfo As BrowseInfo
szTitle = "Select Folder... "
With tBrowseInfo
.hWndOwner = Me.hwnd
.lpszTitle = lstrcat(szTitle, "")
.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With
lpIDList = SHBrowseForFolder(tBrowseInfo)
If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
msgbox( sBuffer)
End If

در پایان خط م اقبل آخر با یك پیغام مسیر انتخاب شده كاربر اعلام می شود كه شما عزیزان می توانید آنرا به دلخواه تغییر دهید

*****************************
چطور می توان كادر خصوصیات Propertis مربوط به یك فایل را ظاهر كرد

كادر خصوصیات اكثرآ در نوشتن یك كاد آرشیو یا لیست فایل كاربرد دارد كه شما روی نام فایل راست كلیك می كنید و این گزینه را معمولآ در انتهای لیست انتخاب می كنید واین كادر ظاهر میشود نوشتن چنین كد هایی باعث حرفه شدن برنامه ی شما می گردد

به ماژولمان كد های زیر را اضافه كنید

'------Typing New data For Propertis File---------------------
Type SHELLEXECUTEINFO
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
'---------------Conset For Propertis Dialog-------------------
Public Const SEE_MASK_INVOKEIDLIST = &HC
Public Const SEE_MASK_NOCLOSEPROCESS = &H40
Public Const SEE_MASK_FLAG_NO_UI = &H400
Public Const ATTR_NORMAL = 0
Public Const ATTR_READONLY = 1
Public Const ATTR_HIDDEN = 2
Public Const ATTR_SYSTEM = 4
Public Const ATTR_VOLUME = 8
Public Const ATTR_DIRECTORY = 16
Public Const ATTR_ARCHIVE = 32
'-----------------------Declareing API------------------------------------------
Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
"ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long

'-----------------------------------------------------------------------------------------

Public Function ShowFileProperties(filename As String, OwnerhWnd As Long) As Long
Dim SEI As SHELLEXECUTEINFO
With SEI
.cbSize = Len(SEI)
.fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
.hwnd = OwnerhWnd
.lpVerb = "properties"
.lpFile = filename
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
ShellExecuteEX SEI
ShowFileProperties = SEI.hInstApp
End Function

حالا هر فایلی را كه می خواهید خصوصییاتش نمایش داد شود به این تابع به صورت زیر ارسال كنید-پاس دهید

ShowFileProperties(FileName,Me.hwnd)

 

 


*****************************
چطور میتوان سطل آشغال ویندوز رو خالی كرد

اگه بخواید یك برنامه تقویت ویندوز بنویسید به گزینه خالی كردن سطل آشغال ویندوز نیاز خواهید داشت
سری قبل این اموزش رو در مورد كنترل سی پی یو (تاكس منیگر)ویندوز نوشتم
برای این كار باید از تابعی موجود در كتابخانه قدرتمند شل كه در آرشیو اموزشهای زیادی راجع به این كتابخانه هست استفاده كنید

شیوه ی تعریف كتابخانه

Private Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (ByVal hWnd As Long, ByVal pszRootPath As String, ByVal dwFlags As Long) As Long
Const SHERB_NOPROGRESSUI = &H2

شیوه ی استفاده

Private Sub Command1_Click()
Dim retvaL
retvaL = SHEmptyRecycleBin(Form1.hWnd, "", SHERB_NOPROGRESSUI)
End Sub

*****************************
کنترل CPU خیلی جالبه

یک فرم ایجاد كنید و یه هفت تا لیبل بزارین روش با یه تایمر و یه HScroll
خاصیت Max مربوط به اسكرول رو روی 100 بزارین
خاصیت Interval تایمر رو روی 50 بزارین

این كدها رو اولین خط فرم بنویسید

'----------Type New Data For Memory------------------
Private Type MEMORYSTATUS
dwlength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type '------------------Declear API Of Kernal Windows Librery-------------
Private Declare Sub GlobalMemoryStatus Lib "KERNEL32" (lpBuffer As MEMORYSTATUS)
Dim Mem As MEMORYSTATUS

روی تایمر دابل كلیك كنید و كد زیر را بنویسید

GlobalMemoryStatus Mem
Me.Caption = Mem.dwMemoryLoad & "% used"
Label1.Caption = "Memory used: " & Mem.dwMemoryLoad & "%"
Label2.Caption = "Total Physical Memory: " & Mem.dwTotalPhys
Label3.Caption = "Available Physical Memory: " & Mem.dwAvailPhys
Label4.Caption = "Page File Bytes: " & Mem.dwTotalPageFile
Label5.Caption = "Available bytes of Page File: " & Mem.dwAvailPageFile
Label6.Caption = "Total Virtual bytes: " & Mem.dwTotalVirtual
Label7.Caption = "Available Virtual Bytes: " & Mem.dwAvailVirtual
HScroll1.Value = Mem.dwMemoryLoad

با كدای بالا می تونین كاركرد CPU و RAM رو مشاهده كنید مثل خود ویندوز

*****************************
WindowsMediaPlayer

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

نحوه ی استفاده از کنترل. از منوی Components\WindowsMediaPlayer گزینه WindowsMediaPlayer را انتخاب کنید

قبل از اینکه آن کادر را ببندید MicrosoftCommonDialog را هم انتخاب کنید

یک دکمه قرار دهید و کد زیر را درونش وارد کنید

CommonDialog1.ShowOpen
WindowsMediaPlayer1.URL=CommDialog1.FileName

مشاهده می کنید که کادر فایل باز شده و فایل انتخاب شده پخش می شود

private sub Play_Click()
WindowsMediaPlayer1.Controls.Play()
End Sub

'------------------------
Prrivate Sub Stop_Click()
WindowsMediaPlayer1.Controls.Stop()
End Sub

'------------------------
Private Sub Pause_Click()
WindowsMediaPlayer1.Pause()
End Sub

یک تایمر به فرم اضافه کنید و یک HScroll1 و یک Lable
تایمر را به 50 تنظیم کنید.روی تایمر دوبار کلیک کنید وکد زیر را وارد کنید

Private sub Timer1_Timer()
Label1.Caption=WindowsMediaPlayer1.Controls.CurrentPositionString
HScroll1.max=WindowsMediaPlayer1.Controls.CurrentItem
HScrol1.Value=WindowsMediaPlayer1.Controls.CurrentPosition
End Sub
*****************************
این هم تمام توابع موجود در فایل GDI32.Dll این دستورات رو تو یه ماژول كپی كنید
http://www.sharemation.com/MahdiVB678/new2/GDI32%20function.rar?uniq=yvs4wt

*****************************
فرمت فایل MP3

مبحث امروز كه ارتباط داره به خواندن اطلاعات اساسی فایل MP3.متغییر های زیر رو تو اول كد تعریف كنید

Dim HasTag As Boolean
Dim Tagg As String * 3
Dim Songname As String * 30
Dim Artist As String * 30
Dim Album As String * 30
Dim Year As String * 4
Dim Comment As String * 30
Dim Genre As String * 1

البته كد بالا تست شده است مورد كاملش اینهاست ولی نمی دونم جواب بده یانه خودتون امتحان كنید اگه شد بهم بگید -فعلآ استفاده نكنید

Private Type MP3Tag
FullName As String ' Filename and filepath of MP3 file
FileName As String ' Name of MP3 file
Path As String ' Path of MP3 file
title As String * 30
artist As String * 30
album As String * 30
Year As String * 4
Comment As String * 30
Genre As String * 20
TagPresent As Boolean
MPEGVersion As String * 3 ' Version 1.0, 2.0 or 3.0
Layer As String * 1 ' Layer 1, 2 or 3
Protection As Boolean ' 0=CRC is present, 1=Not Protected
BitRate As String * 3 ' Recording bitrate
SampleRate As String * 5 ' Sampling Frequency
Padding As Integer ' 0=Frame is not padded, 1=(32bits for Layer 1, 8bits for Layer 2/3)
PrivateBit As Integer ' Not used. Do what you want with it
ChannelMode As String * 12 ' 00=Stereo, 01=Joint Stereo, 10=Dual Channel Stereo, 11=Mono
ModeExtension As String * 2 ' Used only for Joint Stereo
Copyright As Boolean ' Is file copyrighted?
Original As Boolean ' Is file on original media?
Emphasis As String * 8 ' Emphasis setting (usually none (00))
FrameLength As Integer ' Calculated from BitRate, SampleRate and Padding
TotalFrames As Long ' Filelength/Framelength
PlayTime As Single ' Calculated from TotalFrames, SampleRate and Stereo?
ValidHeader As Boolean ' True=Valid Header found, False=Not an MP3 file
End Type

بعد یك پروسیجر به این صورت تعریف می كنیم تاهر وقت بهش یك نام فایل پاس دادیم متغییر هامون پر بشه از اطلاعت فایل

Private Sub GetTag(Filename)
Open Filename For Binary As #1
Get #1, FileLen(Filename) - 127, Tagg
If Not Tagg = "TAG" Then
Close #1
HasTag = False
Songname = "No Tag Found"
Artist = "No Tag Found"
Album = "No Tag Found"
Year = "None"
Comment = "No Tag Found"
Genre = "0"
Exit Sub
End If
HasTag = True
Get #1, , Songname
Get #1, , Artist
Get #1, , Album
Get #1, , Year
Get #1, , Comment
Get #1, , Genre
Close #1
End Sub

حالا به این صورت میشه ازش استفاده كرد

Me.GetTag(MP3 FileName)

به طور معمول وقتی فایل به صورت باینری باز می شه چیزی جز صفر و یك رو نمشه از توش خواند به همین دلیل این نوع باز كردن فایل رو تصویر آینه وار حافظه می گن.چون هر چی روی هارد نوشته همون رو دودستی تحویلت می ده!از این رو باید همیشه بعد از خواندن این نوع فایل ها اونارو از فرمت باینری در آورد با تابع زیر كه ازقبل توی وی بی هست

Src(Your Ascii Word)

اگه رشته رو با(String *30)ولی در برنامه بالا چون اندازه رشته رو تعریف كردیم

یك كد اسكی مقدار دهی كنیم خود به خود هنگام چاپ به فرم رشته ی معمولی در میاد

در دستور بالا ما با علامت ضربدر به وی بی می گوییم كه چه مقدار حافظه را برای متغییر ما نگه دارد ولی اگر این مورد را استفاده نكنیم وی بی به صورت اتوماتیك سایز رشته رو انتخاب .میكنه اگه رشته كم باشه كم واگر زیاد باشه زیاد براش جا نگه می داره به ازای هر حرف یك بایت


*****************************
چطور می توان از Desktop عكس گرفت
این خط رو در اولین خط كد فرم بنویسید-برای مبتدی ها

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

طریقه استفاده
Private Sub Form_load()
Dim W, H
W = Screen.Width / 15
H = Screen.Height / 15
StretchBlt hdc, 0, 0, W, H, GetDC(0&), 0, 0, W, H, vbSrcCopy
End Sub

كشیدن یك دایره روی فرم با كد نویسی-نمودار دایره ای-بیضی
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
PI = 3.14159265
For i = 0 To 161 Step 10
Me.Circle (219, 167), i, RGB(0, 0, 0), 360 * (PI / 180), 360 * (PI / 180), 1
Next
End Sub

آنرا به 3 تغییر دهید.داشتم می گفتم پارامتر سوم برای شعاع دایره -اندازه آن-پارامتر چهارمscalmode توضیحات: پارامتر اول ودوم مكان ترسیم دایره اگر دایره در فرم شما رسم نشد خاصیت
برای رنگ پنجم برای نقطعه شروع وششم برای نقطه ی پایان این دو تا برای رسم نمودار دایره ای بكار می روند.پارامتر آخر هم برای رسم بیضی استفاده می شود

چگونه می توان یك مداد درست كرد مانند برنامه نقاشی ویندوز
كد زیر را در MouseMove بنویسید
If Button <> vbright Then Me.PSet (X, Y)

چطور می توان یك قطره چكان درست كرد كه روی هر گزینه رفت رنگ پیش فرض رنگ انجا شود
عكس بنویسیدMouseMoveبه فرم اضافه كنید یك عكس داخل كادر عكس قرار دهید و كدزیر را در رویدادPictureویكLabelیك

Label1.BackColor=Picture1.Point(X,Y)

چطور می توان یك عكس را معكوس كرد
منظورت ازمعكوس اگه معكوس خود عكس در طراحی باشه كد زیر جوابش هست

With Picture1
.PaintPicture .Picture, 0, .Height, .Width, -.Height
End With

ولی اگه منظورت معكوس رنگ باشه كد زیر جوابش هست
With Picture1
.PaintPicture .Picture, 0, 0, , , , , , , vbDstInvert
End With

یرای موقعی به كار می رود كه از یك اسم زیاداستفاده می كنیم.اسم را جلوی آن مینویسیم وهر وقت یك دات بزنیم قابل استفاده استWithتوضیحات:ِ
پارامتر اول یرای عكسی كه میخواهیم از آن برای ترسیم استفاده كنیم.دوم و سوم برای نقطه شروع ترسیم .چهارم و پنجم برای اندازه تصویر ترسیمی.ششموهفتم برای نقطه پایان ترسیم.هشتم ونهم برای اندازه های پایانی ترسیم وپارامتر آخر برای نوع ترسیم

******************************
چطور میشه یك عكس رو روشنتر كرد یا پر رنگ
Private Declare Function SetPixelV Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Byte
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long

Private Sub CmdBrightness_Click()
'variables for brightness, color calculation, positioning
Dim Brightness As Single
Dim NewColor As Long
Dim x, y As Integer
Dim r, g, b As Integer
'change the brightness to a percent
Brightness = TxtBrightness / 100
'run a loop through the picture to change every pixel
For x = 0 To Picture1.ScaleWidth
For y = 0 To Picture1.ScaleHeight
'get the current color value
NewColor = GetPixel(Picture1.hDC, x, y)
'extract the R,G,B values from the long returned by GetPixel
r = (NewColor Mod 256)
b = (Int(NewColor / 65536))
g = ((NewColor - (b * 65536) - r) / 256)
'change the RGB settings to their appropriate brightness
r = r * Brightness
b = b * Brightness
g = g * Brightness
'make sure the new variables aren't too high or too low
If r > 255 Then r = 255
If r < 0 Then r = 0
If b > 255 Then b = 255
If b < 0 Then b = 0
If g > 255 Then g = 255
If g < 0 Then g = 0
'set the new pixel
SetPixelV Picture1.hDC, x, y, RGB(r, g, b)
'continue through the loop
Next y
'refresh the picture box every 10 lines (a nice progress bar effect)
If x Mod 10 = 0 Then Picture1.Refresh
Next x
'final picture refresh
Picture1.Refresh
End Sub

احتیاج دارید كه متن درون آن به درصد برابر میزان روشنایی استTxtBrightnessیك كادر متن به نامCmdBrightnessحال كردین با توضیحات كامل برای كد بالا یك كامند به نام

************************************
چگونگی زدن طیف رنگ (مثلآ سبز به سیاه) به یك فرم
در رویداد فرم Load كد زیر رابنویسید

On Error GoTo B
Dim r%, F%, Heght%, Wath%, X%, Color$ '--\/\/\/ Set Color Of Form
Color = "Red_Black" '----------------تعیین تیف رنگ
Heigh = Me.Height + 200: Widt = Me.Width
F = Heigh \ 255: r = 0
Select Case Color
Case "Red_Black": GoTo 1
Case "With_Red": GoTo 2
Case "Green_Black": GoTo 3
Case "With_Green": GoTo 4
Case "Blue_Black": GoTo 5
Case "With_Blue": GoTo 6
Case "With_Black": GoTo 7
End Select
Exit Sub '---------------------------Main--------------------------------------------
1
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250 - r, 0, 0)
Next X
Next i: GoTo B
2 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250, 254 - r, 255 - r)
Next X
Next i: GoTo B
3 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(0, 250 - r, 0)
Next X
Next i: GoTo B
4 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250 - r, 255, 255 - r)
Next X
Next i: GoTo B
5 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 255 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(0, 0, 250 - r)
Next X
Next i: GoTo B
6 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 20000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250 - r, 250 - r, 255)
Next X
Next i: GoTo B
7 '--------------------------------------------------------------------------------
For i = 0 To Heigh Step F
r = r + 1
If r = 9000 Then Exit For
For X = i To F + i
Me.Line (0, X)-(Widt, X), RGB(250 - r, 250 - r, 250 - r)
Next X
Next i '--------------------------------------------------------------------------------
B:
Set Me.Picture = Me.Image

میتونید این كد رو خیلی كوتاه استفاده كنید وهرخط چینی كه مربوط به رنگ خودتونه رو نگه دارید بقیه رو حذف كنید.با كمی دقت می توانید رنگ های جدید بسازید

*********************
چگونه ساعت دیجیتال بسازیم

كوتاهترین راه برای ساخت یك ساعت روش زیر است یك Picturebox به فرم اضافه كنید

Private Sub Form_Load()
Static Score As Long
Counter.Show
DoEvents
Score = 0
For I = 1 To 1265
DisplayNumber 10, Score
Score = I
DoEvents
Next
End Sub'-------------------------------------------------------------------
Private Sub DisplayNumber(DisplayWidth As Integer, TheNumber As Long)
Dim DisplayString As String, Zeros As Integer, GraphicsHeight As Single
Dim DigitValue As Integer, NumPosition As Integer
'--------------------Start Time---------------
GraphicsHeight = Picture1.ScaleHeight / 2
Zeros = DisplayWidth - Len(Trim(TheNumber))
For I = 0 To Zeros - 1
DisplayString = DisplayString & "0"
Next
DisplayString = DisplayString & Trim(Str(TheNumber))
For I = 0 To DisplayWidth - 1
DigitValue = Val(Mid(DisplayString, I + 1, 1))
If DigitValue = 0 Then NumPosition = 10 Else NumPosition = DigitValue _
Counter.PaintPicture Picture1.Image, I * (Picture1.ScaleWidth / 10), 0, _
Picture1.ScaleWidth / 10, Picture1.ScaleHeight / 2, (NumPosition - 1) _
* (Picture1.ScaleWidth / 10), GraphicsHeight, Picture1.ScaleWidth / 10, Picture1.ScaleHeight / 2
Next
End Sub

در كد بالا به دلایلی فرم خارج نمی شود باید یك دكمه برای خروج از فرم تنظیم كنیدودر كد كلیك آن بنوسید
End
*****************************
كلاس چیست؟؟؟؟

كلاس یك مجموعه ای از كدهاست كه شبیه به یك كنترل هستند فقط شكل ظاهری و طراحی ندارند
كلاس ها شی هستند - یعنی خاصیت دارند -كلاس ها می توانند داخل خود پردازه یا تابع محلی وسراسری داشته باشند
كلاس به چه دردی می خورد-كلاسها از تكرار كدها جلو گیری می كنند -كلاس ها خوانایی برنامه را افزایش می دهندوغیره
كلاس ها می توانند به صورت خودكار خود را مقدار دهی كنند-یك ماژول كلاس ایجاد كنید وكدهای زیر را در آن كپی كنید

تعریف یك خاصیت در كلاس

'-----------Set Property Information---------

Public Poperty Let CWidth( Value As Integer)
CWidth=Value
End Property

'------------Get Property Information--------------

Public Property Get CWidth() As Integer
CWidth=CForm.Width
End Property

دستور اول خاصیت را مقدار دهی می كند با مقداری كه كار بر فرستاده
دستور دوم برای دادن مقدار برای كابر است .البته هر كدام از این دستورات را می توان به صورت محلی استفاده كرد
وی بی با كلاس ها مانند یك نوع جدید رفتار می كند یعنی شما برای استفاده از یك كلاس در سطح فرم باید یك متغیر از
نوع كلاس تعریف كنید .تعرف یك متغییر محلی در سطح فرم

Private CForm As Form

تمام متغییر ها وتوابع وپردازه ها وحتی نام خود كلاس را با سی آغاز كنید تا معلوم شود مربوط به یك كلاس است
تعرف یك پردازه سراسری در كلاس

Private Sub CSetInfo(Frm As Form)
Set Form=Frm
End Sub

اگر تمام كدها بالا را درست در یك ماژول كلاس كپی كنید اكنون نوبت استفاده از كدهای بالاست
در خط اول فرم یك متغییر از نوع نام كلاس تعریف كنید.بدین صورت

Dim Calss As Class1
Private Sub Form_Resiz()
Me.Caption="Form1.Width: "& Class.With
End Sub

*****************************
تنظیم ابعاد نمایش ویندوز برای یك برنامه اختصاصی

برنامه های سه بعدی از فضا نمی آیند توسط همین وی بی -دلفی واكثرآ سی پلاس پلاس طراحی می شن وقتی یك بازی سه بعدی روباز می كنیم ویك دفعه یك صفحه با گرافیكی كه تا حالا ندیدیم یه صورت زیبا بالا می آد اكثر ما -بیشتر خودم- خیلی كف میكنیم كه این برنامه ها چطور ساخته می شن-با چی ساخته می شن

امروز می خوام تنظیم ابعاد صفحه نمایش ویندوز رو با ابعاد دلخواه خودمون بگم كه گام اول طراحی سه بعدیه اگه بشه شاید مراحل بعدیش رو هم بزارم روی سایت كه مونده به یاری شما .بانظراتتون و خدا با توفیقش

ابتدا متغییر های اول فرم

Dim Dx As New DirectX7
Dim Dd As DirectDraw4
Dim clip As DirectDrawClipper

البته بعد از نوشتن كد بالا به منوی پروژه رفته گزینه ریفرنس رو انتخاب كنید در منوی باز شده تیك گزینه ی دایركت ایكس 7 رو بزنید

تا كد هاتون اجرا بشه روی فرم دابل كلاك كنید و كد زیر رو بنویسید

Set Dd = Dx.DirectDraw4Create("")
Set clip = Dd.CreateClipper(0)
clip.SetHWnd Me.hWnd
' screen mode
Dd.SetDisplayMode 800, 600, 32, 0, DDSDM_DEFAULT

بااین كد صفحه نمایش به مد 800*600و حالت 32بایتی میره
*****************************
دستور Shell

توسط این دستور می تونید فایلی را در وی بی اجرا كنید .آدرسی كه جلوی این دستور نوشته می شه اجرا میشه .شكل این دستور به این صورت است

Shell ProgramPath,RunModel

در آرگومان اول مسیر فایل نوشته می شود ودر آرگومان دوم مدلی كه برنامه باید اجرا شود.در این ارگومان از آرگومان های زیر استفاده می گردد

vbHide=0 vbMaximizedFocus=1 vbMinimizedFocus=2 vbMinimizedNoFocus=3 vbNormalFocus=4 vbNormalNoFocus=5

در مدل صفر برنامه به صورت پنهان ظاهر می شود.برای مواقعی كه می خواهیم عمل اجرا را از دید كاربر پنهان كنیم .در مدل 2 برنامه اجرا می شود به صورت كمینه(روی منوی استارت-مینیمایز شده)وفاكس هم روی ان می رود یعنی این كه بعد از اجرا هی زرد و آبی می شود تا كار بر روی آن كلیك كند.مدل 3برنامه به

صورت ینیمایز -كمینه اجرا می شود زرد وآبی نمی شود (معمولی-فاكس رویش نمی رود).مدل 1برنامه به صورت تمام صفحه اجرا شده فاكس هم روی آن می رود(زرد و ابی می شود).در مدل 4برنامه با اندازه پیش فرض اجرا می شودوفاكس را هم می گیرد.درمدل 5برنامه با اندازه معمولی اجرا شده و فاكس نمی گیرد

كار برد مهم دیگر شل اجرا فایل های معمولی با یك برنامه اجرایی است مثل اجرای یك متن در نت پد.برای این كار نام فایل را بایك فاصله از نام فایل می نویسیم

Shell "NotPath.Exe"+" C:\Text1.txt" ,4

توجه داشته باشید كه برای اجرای فایل باید نام ومسیر فیل را با یك كاراكتر فاصله بنویسید

اگر فاصله ندهید قطعآ خطا انجام می شود.اگر فایلی در مسیر برنامه تان كپی كرده اید این كد را بنویسید

shell "notpath.exe"+(app.path+"\"+"your File Name")

كلاسی است كه به برنامه اشاره می كند ومی توان اطلاعات برنامه مانند مسیر-نام فایل اجرائی-كمپانی وغیرهapp

برای نوتپد ویندوز چون در درایو ویندوز قرار دارد احتیاج به تایپ مسیر كامل نیست همچنین اگر شما فایلی را از پوشه

اجرا كنید به مسیر كامل نیاز نیست برنامه ای مانند كامند پرامپت بازی ها واسكرین سیور ها در این پوشه system32

است.مثال hell "cmd.exe",4

اجرای یك فولدر با شل

واقع در درایو ویندوز را به همراه نام فیل اجرا می كنیمexplorer.exeبرای این كار فایل اجرائی

shell "explorer.exe"+" c:\windows" ,3

با اجرای این برنامه پوشه ویندوز اجرا می شود روش بالا در سی دی های اتوران استفاده ی زیادی دارد

Shell "rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl "كادر حذف برنامه ها
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl"كادر تغییر پس زمینه
Shell "rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl"كادر اینتر نت
Shell "rundll32.exe shell32.dll,Control_RunDLL modem.cpl"كادر مودم
Shell "rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl"كادر صدا
Shell "rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl"كادر شبكه
Shell "rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl"كادر پاور-برق
Shell "rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl"كادر سیستم
Shell "rundll32.exe shell32.dll,Control_RunDLL telephon.cpl"كادر تلفن
Shell "rundll32.exe shell32.dll,Control_RunDLL timedate.cpl"كادر ساعت

كتابخانه وسیع Shell

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal_ lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal_ nShowCmd As Long) As Long

كد های زیر را هر جا استفاده كنید جواب می دهدالبته بهد از اینكه كد بالا را در اولین خط فرم نوشتید

Shell "arp"
Shell "drvspace"
Shell "drwatson"
Shell "explorer"برای my document
Shell "freecell"
Shell "ftp"برای تنظیم اف تی پی
Shell "ipconfig"كادر آی پی
Shell "mplayer"مدیا پلیر
Shell "mshearts"
Shell "nbtstat"
Shell "netstat"
Shell "calc"ماشین حساب
Shell "notepad"نوت پد
Shell "packager"
Shell "pbrush"نقاشی
Shell "ping"
Shell "regedit"ریجیستری
Shell "route"روت
Shell "scandskw"اسكن دیسك
Shell "scanregw"اسكن رگ
Shell "setdebug"كخك تری تنظیم ویندوز
Shell "sigverif"
Shell "cdplayer"سی دی پلیر
Shell "sndrec32"ضبط صدا
Shell "sndvol32"تنظیم ولوم صدا
Shell "sol"همون سول
Shell "taskman"وضعیت سی پی یو
Shell "telnet"تلفن
Shell "vcmui"
Shell "winfile"
Shell "winipcfg"
Shell "winmine"
Shell "winrep"
Shell "charmap"كاراكتر مپ
Shell "winver"
Shell "write"وورد پد
Shell "wscript"
Shell "cleanmgr"كلنر پاك كننده اشغال درایو
Shell "control"كنترل پنل
Shell "cvt1"
Shell "defrag"دفراگمنت
Shell "drvspace" فضای خالی دیسك

اجرای فایل اینترنت با Shell
shell "Explorer.exe"+" http://www.VBLog.blogfa.comن به یك سایت
shell "explorer.exe"+" maileto:Mahdi_VBLog@yahoo.com"كادر ارسال ایمیل
shell "explorer.exe"+" yor HTML File.html"كادر اجرای یك فایل اینترنت از حافظه
shell "explorer.exe"+" file://www.سایت شما.com/11.zip"كادردانلود یك فایل از اینترنت
*****************************
فرمت فایل M3U
چگونه یک فایل PlayList با پسوند M3U بسازیم

گاهی وقتی عده ی زیادی فایل را در مدیا پلیر یا وینمپ باز می كنیم یك گزینه به نام SavePlaylist
می بینیم كه برای ذخیره كردن آن لیست در یك فایل استفاده می شود.اگر یك برنامه ی پخش صوت یا تصویر باكنترل مدیا پلیر نیز بنویسید برای پخش هم زمان چندین فایل به مشكل برخواهید خورد .درچنین مواقعی می توانیم با ذخیره لیست در یك فایل ام تری یو وباز كردن آن در كنترل مدیا پلیر چندین فایل را با هم پخش كرد .شاید شما بتوانید فایل هایتان را مستقیمآ به لیست مدیا پلیر احتیاج به دانستن فرمت فایل ام تری یو داریدPlayListاضافه كنید ولی باز هم برای ذخیره

با این تابع این كار را انجام دهید

Public Sub SaveList(OutPath As String,Lst as ListBox)
On Error Resume Next '--------------------------------------------------
Dim T3 As String, T2, strans As String, L As Single, i As Integer
T3 = "": T2 = ""
If Lst.List(1) = "" Then
strans = MsgBox("File Not Found!", vbCritical)
Exit Sub '------------------------------------------------------
End If
If UCase(Right(OutPath, 3)) <> "M3U" Then Exit Sub
Open OutPath For Output As #1
Print #1, "#EXTM3U:"
For i = 1 To Lst.ListCount '----------------------------
Print #1, "#EXTNIF:"
Print #1, Lst.List(i)
Next i '------------------------------------------------------
Close #1
End Sub

حال برای زخیره كردن فایل های صوتی و تصویری موجود در یك لیست تنها به دستور زیر نیاز دارید

SaveList "C:\1.M3U",List1
*****************************
برخی اپراتور های Visual Basic

Type Of اپراتور

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

TypeOf ControlName Is ControlType

مثال:كنترلی از نوع فایل بوكس رابه تایع زیر می فرستیم یرای تعیین عضو انتخاب شده

Private Function GetSelectItem(LST as Contol) as String
if TypeOf lst is listbox then
GetselectItem=Lst.text:Exit Function
else :GetselectItem=Lst.FileName:Exit Sub
End if

در خط یك تابع با آرگومان یك لیست از نوع كنترل تعریف می شود خروجی تایپ آف به صورت یك منو مانند تعریف متغییر هنگام كد نویسی ظاهر می شود كه شما می توانید نو ع كنترل خود را از داخل آن انتخاب كنید.توجه كنید بین تایپ و آف نباید فاصله بیفتد واگر نه با خطای كامپایل مواجه می شوید.

DoEvents اپراتور

این اپراتور برای ارجاع تمام عملییات به سی پی یو برای انجام می باشد.اكثرآ از این اپراتور برای مواقعی استفاده می گردد كه یك عملیات وقتگیر در حال انجام است مانند اعمال افكت روی تصویر و حلقه های تكرار طولانی. این اپراتور در درون حلقه قرار گرفته و كامپایل نمی شود مانند رهنمود ها در پاسكال عمل می كندوبه سی پی یو می گوید تمام كارهیت را به صورت یكسان انجام بده واز اولویت ها صرف نظر كن .در برنامه هایی كه یك عملیات در درون یك حلقه هر دور انجام می شود آكثرآ باعث هنك كردن آن برنامه تا پایان عملیات می شود.چون برنامه بین واكنش به تكان خوردن موس -جابه جاكردن برنامه یا بزرگ و كوچك كردن برنامه وپردازش روی عملیات مورد نظر(مثلآ كپی فایل)عملییاتی كه دارای اولویت پردازش است را انتخاب می كند.این اپراتور در چنین مواقعی بسیار مفید است وباعث می شود كاربر گمان نكند كه برنامه هنك كرده و آن را ببندد.مثال:ِ

For i=0 to list1.listCount -1
if list1.list(i)<>"" then call Copy(list1.list(i),App.path+"\")
DoEvents
Next

در خط اول حلقه ای از صفر تا تعداد اعناصر موجود در لیست اغازمی شودو در هر درو فایل درون لیست در صورت وجود كپی می شود .اگر فایل های مازیاد باشد DoEventsو اپراتور را ننویسیم حتمآ برنامه ما هنك می كند.باید یاد آور شد استفاده نابجا و بیش از اندازه این اپراتور موجب كاهش سرعت برنامه می شود.ِالبته

استفاده می كنندSleepبه نام APIباعث كاركرد زیاد وشدید سی پی یو می شود وبرخی ترجیح می دهند از آن استفاده نكنند ویه جای ان از یك

فرق می كند. اسلیپ باعث میشود سی پی یو تمام كار های در حال اجرا را رها كند وبه مدت زمانی كه جلویDoEventsباید گفت كاركرد اسلیپ به طور كلی با

آن نوشته می شود به استراحت بپردازد.ِ

.: Weblog Themes By Pichak :.


تمامی حقوق این وبلاگ محفوظ است | طراحی : پیچک

پیچک