Questione : Come arresto una chiamata di PlaySound che continua l'uscita fuori della logica del programma che la ha denominata?

Sotto il codice esegue correttamente fino al primo caso che dovrebbe produrre il suono.  Quella è la dodicesima barra del quinto ciclo.  Il problema è che una volta che il suono è denominato la prima volta. continua a suonare da allora in poi ogni barra, anche se le esposizioni di codice esso è chiaramente una volta event.

For C = 1 al iCycStart di CycPhase
= (iCycEnd di 1)
= (AncDyBar + (CycLength - 1)) pBarCnt del
= 0
“il
del ************** di sequenza dopo I del *********** per i = iCycStart al pBarCnt del iCycEnd
= al pBarCnt + a 1
„ quinto cycle
PlayNow = PlaySound di PlaySound = di PlayNow (posizione di segnale minimo, 0, 0) 'ha commentato fuori perché non fa il work
se pBarCnt = 12 Then
v1 (z1, i) = barra (2, i)
se C =(A, p, SND_FILENAME o SND_ASYNC o SND_NOWAIT) il i
AncDyBar = il i
C

I di If
di conclusione di If
di conclusione del
ha provato SndPurge e la stringa nulla come indicato commentato fuori sopra.  La stringa nulla arresta il DLL dal funzionamento complessivamente e lo SndPurge non fa niente. e niente arresta una chiamata di ripetizione alla lima del wav.  Sotto sono le ulteriori informazioni a help.

Public dichiarano che movimento di liberazione sano “winmm.dll„ il nome SND_FILENAME del _
di PlaySound di funzione = &H20000 del _
altrimenti detto “PlaySoundA„ (lpszName di ByVal come stringa, il hModule del _
ByVal come lungamente, dwFlags del _
ByVal come lungamente) poichè Long
Public Const 'è un
Public Const di nome di schedario SND_ASYNC = &H1 'il asynchronously
Public Const del gioco SND_NOWAIT = &H2000 'non attende se il driver è busy
Public Const SND_PURGE = &H40 'il

Thank di arresto (wav più lungo) voi,
spc909
class= del

Risposta : Come arresto una chiamata di PlaySound che continua l'uscita fuori della logica del programma che la ha denominata?

come circa

PlaySound (vbNullString, 0, 0)
Altre soluzioni  
 
programming4us programming4us