Visual Basic ile WAV Dosyalarını Çalmak

cartman

Katılımcı Üye
28 Ara 2005
932
17
zBjk
Visual Basic ile WAV Dosyalarını Çalmak

Visual Basic'i kullanarak Windows ses dosyalarını (WAV) çalabilmeniz için, Api fonksiyonlarına ihtiyacınız var. İlk olarak bu fonksiyonu kullanarak ufak bir program yaptık. Bize gerekli olanlar: dosya seçiminde kullanacağımız bir sürücü listesi, dizin listesi ve dosya listesi, bir de seçilen dosyayı görebilmemiz için gereken bir etiket. Formunuzun üstüne bunları gösterildiği biçimde yerleştirin ve hemen kodlarımızı yazmaya başlayın...
Ses dosyalarını çalabilmek için öncelikle bir ses kartına ihtiyacınız var. İşte ses dosyalarını çalabilmeniz için gereken API fonksiyonu ve parametreleri. Bunları iyice inceledikten sonra programımızı yazmaya başlayabilirsiniz.
Declare Function sndPlaySound Lib "MMSYSTEM.DLL" (ByVal ses$, ByVal ozellik%) As Integer
Parametreler:

ses$
Çalınacak ses dosyasını belirtir.Eğer ses dosyası belirtilmezse o anda çalan dosya durdurulur.

ozellik%
Bu değişken yerine ses dosyasının nasıl çalınacağını belirten aşağıdaki sabitlerden biri
kullanılmalıdır.

SND_SYNC
Sistem olaylarını durdurur. Program kontrolü ses dosyası çalındıktan sonra geri döner.

SND_ASYNC
Ses arka planda çalar. Program kontrolü ses dosyasının hemen başında geri döner.

SND_NODEFAULT
Eğer belirttiğiniz ses dosyası bulunamadıysa hata mesajı verilmeden programa geri dönülür.

SND_LOOP
Çalmak istediğiniz ses dosyası sndPlaySound fonksiyonuna boş bir değer verene kadar tekrar eder. Eğer bu özelliği kullanıyorsanız aynı zamanda ses dosyasını geri planda çalmaya yarayan SND_ASYNC fonksiyonunu kullanmalısınız.

SND_NOSTOP
Eğer herhangi bir ses o anda çalınıyorsa istediğiniz dosya çalınmaz ve bu fonksiyonu atadığınız değer anında 0 (False) olur. Bu özellik aynı zamanda o anda bir sesin çalınıp çalınmadığını anlamanıza da yardımcı olur.


Not: sndPlaySound fonksiyonu eğer belirttiğiniz dosya sorunsuz olarak çalınırsa 1 değerini döndürür.

Gelelim programımızın kodlarına. Aşağıdaki birinci paragraf programın diğer modüllerinden ayrı bir yere yazılmalıdır. (WAVCAL.BAS gibi.)

Declare Function sndPlaySound Lib "MMSYSTEM.DLL" (ByVal ses$, ByVal ozellik%) As IntegerGlobal Const SND_SYNC = &H0Global Const SND_ASYN = &H1Global Const SND_NODEFAULT = &H2Global Const SND_LOOP = &H8Global Const SND_NOSTOP = &H10Sub Form_Load ()ChDir "c:\windows" label1.Caption = ""file1.Pattern = "*.wav" ' Sadece WAV uzantılı dosyalarımız listelensinEnd SubSub Drive1_Change ()dir1.Path = drive1.Drive ' Sürücü değiştiğinde dizin listesini yenileEnd SubSub Dir1_Change ()file1.Path = dir1.Path ' dizin değiştiğinde dosya listesini yenileEnd SubSub File1_Click ()ses$ = dir1.Path + "\" + file1.FileName If Mid$(ses$, 4, 1) = "\" Then ' Eğer ana dizindeysek araya \ karakterini sokmases$ = dir1.Path + file1.FileNameEnd If
Burada Genel Dialog kutusunu kullanmamamızın bir dez avantajını görüyorsunuz. Her ne kadar bu kodu yazmadan programımız çalışsa da liste kutumuz ana dizini gördüğünde ses dosyamızın yerini bulmakta bir sorun yaşanacaktır. Yani yukarıdaki kod parçası her seferinde bu sorunu gidermek için kullanılabilir. label1.Caption = " Ses: " + ses$ ozellik% = SND_ASYNC And SND_NODEFAULT X% = sndPlaySound(ses$, ozellik%)End Sub
 

modifiyecim

Yeni üye
26 Tem 2007
3
0
saol arkadaş benim bir de sorum olcak bir butona tıklayarak sesi nasıl oynatabiliriz??
diyelim ben bir ses programı yapcam .önceden sesleri kaydettim ve şimdi buttonları kullanarak onları oynatmak istiyorum bunu nasıl sağlarım???
:)
 

liberty_oz

Yeni üye
8 Tem 2007
11
0
daha basıt bir yolu var arkadaşım

kad

Private Declare Function Play Lib "winmm" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal wFlags As Long) As Long
'.....................................................................................................
Sub Form_Load() 'form acıldığında direk olarak calışır
X = Play(App.Path & "\Ses\alarm.wav", 1)
end sub
'..........................................................................................
Private Sub Command1_Click()'butona basıldıgı zaman calışır
X = Play(App.Path & "\Ses\alarm.wav", 1)

End Sub
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.