2013-04-12 2 views
-1

PlaySound()를 사용하여 .wav 파일을 재생하는 방법은 무엇입니까? 나는 PlaySound (사운드)를 가지고 있지만 "옵션이 아닌 인수"오류가 계속 발생합니다.VB6에서 PlaySound()로 사운드를 재생하는 방법

어떻게 소리를 멈추게합니까?

+1

코드를 게시하십시오. 그러나'선택의 여지가없는 주장'은 언제나 말하고있는 그대로이다. –

답변

3

질문에 코드를 표시하지 않으므로 잘못된 점을 추측해야합니다.

첫째, PlaySound 기능이 제대로 VB 6 코드에 선언 할 필요가 :

Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" _ 
    (ByVal lpszName As String,          _ 
    ByVal hModule As Long,           _ 
    ByVal dwFlags As Long) As Long 

그리고 당신은 API 뷰어 응용 프로그램을 사용하여 쉽게 찾을 수있는 몇 가지 상수가 필요합니다. 당신은 그 매직 넘버 각각 또는 수행의 의미를 배울 수 the SDK documentation를 참조해야합니다

Private Const SND_APPLICATION As Long = &H80 
Private Const SND_ALIAS As Long  = &H10000 
Private Const SND_ALIAS_ID As Long = &H110000 
Private Const SND_ASYNC As Long  = &H1 
Private Const SND_FILENAME As Long = &H20000 
Private Const SND_LOOP As Long  = &H8 
Private Const SND_MEMORY As Long  = &H4 
Private Const SND_NODEFAULT As Long = &H2 
Private Const SND_NOSTOP As Long  = &H10 
Private Const SND_NOWAIT As Long  = &H2000 
Private Const SND_PURGE As Long  = &H40 
Private Const SND_RESOURCE As Long = &H40004 
Private Const SND_SYNC As Long  = &H0 

: 여기에 내가 VB 6가 설치되어 있지 않기 때문에 웹을 뽑아 목록입니다. 거기에있는 동안 함수의 매개 변수의 의미를 읽어야합니다. 오류가 발생하면 함수를 잘못 호출하는 것처럼 들립니다. 특히 세 가지 인수 중 하나를 생략하고 모두 필요합니다 (예 : Optional으로 표시되지 않음).

재생할 사운드의 종류 나 사운드 파일의 위치를 ​​알 수 없으므로 상황을 완벽하게 캡처하는 예제를 제공 할 수 없습니다. 그러나 디스크의 파일에서 사운드를 재생하려면 사운드 파일의 전체 경로를 첫 번째 인수로 전달하고, 두 번째 인수는 0으로 설정하고 (리소스에서 사운드를로드하지 않기 때문에) SND_FILENAME 세 번째 주장.

PlaySound "X:\Sounds\trumpet.wav", 0, SND_FILENAME 

SND_ASYNC 플래그를 추가하여 비동기 적으로 사운드를 재생할 수도 있습니다. 즉, 함수가 즉시 반환되고 나머지 코드가 실행되는 동안 사운드가 백그라운드에서 재생되도록 허용합니다. 이는 기본 동작 대신 SND_SYNC 플래그로 명시 적으로 수행됩니다.

플래그를 추가하여 중지 할 때까지 소리가 반복 재생되게 할 수 있습니다. 당연히 이는 또한 SND_ASYNC 플래그가 필요합니다.

PlaySound "X:\Sounds\trumpet.wav", 0, SND_FILENAME Or SND_ASYNC Or SND_LOOP 

는 당신이 필요로하지 않기 때문에 당신이 (첫 번째 인수에 대해 널 (null) 문자열을 전달, 재생의 사운드를 중지하려면 :

모두 함께, 우리는 지속적으로 루프와 비동기 적으로 재생되는 사운드를 얻을 퍼팅 당신은 어떤 특별한 행동을 필요로하지 않기 때문에) (세 번째 인수를위한 재생 소리), 0 다시 두 번째 인수, 0을 지정합니다 : 당신이 통과하는 경우

PlaySound vbNullString, 0, 0 

을 물론,이에만 작동합니다 처음 재생을 시작했을 때 SND_ASYNC 깃발 소리. 그렇지 않으면 사운드가 이미 재생을 마칠 때까지 컨트롤이 코드로 돌아 가지 않습니다. 그러면 아무 것도 멈출 수 없습니다!

+0

PlaySound()로 두 줄에 구문 오류가 표시됩니다. –

관련 문제