Avatar billede Slettet bruger
11. november 2003 - 18:23 Der er 8 kommentarer og
1 løsning

Start/stop loop til PlaySound

Hvordan laver jeg min play knap om til en loop start/stop knap? Koden ser sådan ud nu...


Option Explicit
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
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
Private Const SW_SHOWNORMAL = 1
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2

Public Sub PlaySound(ByVal strPath As String)
  sndPlaySound strPath, SND_SYNC
End Sub

Private Sub Command1_Click()
Call PlaySound(App.Path & "\click.wav")
End Sub
Avatar billede kabbak Professor
11. november 2003 - 18:35 #1
i vba ville jeg nok gøre sådan

Public StartStop As Boolean

Private Sub Command1_Click()
If StartStop = False Then
Call PlaySound(App.Path & "\click.wav")
StartStop = True
Else
Call PlaySound(App.Path & "")
StartStop = False
End If
End Sub

hver anden gang stopper og starter den.

jeg har ikke VB, så jeg kan ikke teste
Avatar billede Slettet bruger
11. november 2003 - 18:43 #2
Jeg er ikke så prof, så du må lige forklare hvad er StartStop? Er det noget der skal declares?

Looper den også filen?
Avatar billede kabbak Professor
11. november 2003 - 18:50 #3
StartStop er en bolean
Public StartStop As Boolean( er global variabel der beholder sin værdi efter at 'Private Sub Command1_Click()' er udført, så den ved at den er udført en gang.
Næste gang du trykker på kanppen udfører den det efter 'Else', og den kommando skulle gelst stoppe udførelsen af PlaySound.

om den skal declares, ved jeg faktisk ikke, i VBA er det nok at skrive den i toppen af modulet.
Avatar billede tjacob Juniormester
13. november 2003 - 12:24 #4
Jo den skal deklareres, men det er også det man gør ved at sætte
den i toppen. ;-) kabbaks forslag looper ikke, men her er en tilrettet
version med hele koden:

Option Explicit
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
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
Private Const SW_SHOWNORMAL = 1
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Private Const SND_SYNC = &H0    '<<<<<denne manglede du

Public bStart As Boolean

Public Sub PlaySound(ByVal strPath As String)
  sndPlaySound strPath, SND_SYNC
End Sub

Private Sub Command1_Click()

    If bStart = False Then bStart = True Else bStart = False
    Do While bStart = True
        PlaySound (App.Path & "\click.wav")
        DoEvents
    Loop
   
End Sub

/tjacob
Avatar billede tjacob Juniormester
13. november 2003 - 12:35 #5
eller lidt simplere:

    bStart = Not bStart
    Do While bStart
        PlaySound (App.Path & "\click.wav")
        DoEvents
    Loop
Avatar billede Slettet bruger
13. november 2003 - 20:49 #6
Det ser ud til at virke, men den gør noget meget mærkligt! Når jeg trykker på command1 afspiller den lyden og så 'fryser' computeren i ca 5-10 sek og sådan forsætter den! Hmmm, hvorfor?
Avatar billede sjh Nybegynder
14. november 2003 - 22:14 #7
Prøv at udskifte med:


Private Const SND_ASYNC    As Long = &H1
Private Const SND_NODEFAULT As Long = &H2

Public Sub PlaySound(ByVal strPath As String)
  sndPlaySound strPath, (SND_ASYNC Or SND_NODEFAULT)
End Sub
Avatar billede kabbak Professor
01. februar 2004 - 01:04 #8
Lukketid.
Avatar billede Slettet bruger
04. august 2005 - 13:19 #9
lukket!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester