11. november 2003 - 18:23Der 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
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
Synes godt om
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?
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.
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
bStart = Not bStart Do While bStart PlaySound (App.Path & "\click.wav") DoEvents Loop
Synes godt om
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?
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.