문제

Windows Mobile 앱에 WAV 파일을 추가했으며 Coredll.dll에서 MobilePaySound를 사용하여 재생하고 싶습니다.

파일 이름은 매개 변수 중 하나입니다.


MobilePlaySound(fileName, IntPtr.Zero, (int)(Flags.SND_ASYNC | Flags.SND_FILENAME));

새 폴더 '사운드'를 만들고 프로젝트에 'start.wav'를 추가하고 속성 '빌드 액션'을 '임베디드 리소스'로 설정합니다.

그런 다음 파일 이름을 설정했습니다.


fileName = "\\Program Files\\myApp\\sound\\start.wav";

그러나 소리는 전혀 재생되지 않습니다. 그렇다면 올바른 파일 패스는 무엇입니까?

도움이 되었습니까?

해결책

빌드 동작을 "임베디드 리소스"로 설정하면 파일이 자원으로 어셈블리에 컴파일됩니다. 이는 WAV 파일이 .exe 또는 .dll 파일에 내장되어 파일 시스템에 나타나지 않음을 의미합니다. 이 때문에 WAV의 파일 이름을 필요로하는 방법으로 전달할 수 없습니다.

이를 해결하는 방법에는 두 가지가 있습니다. WAV 파일을 실제로 임베디드 리소스로 사용하려면 리소스를 추출하여 런타임에 파일 시스템의 파일에 작성해야합니다. 그런 다음 해당 파일의 이름을 MobilePaySound 메소드로 전달할 수 있습니다. 이 경우 개인적 으로이 솔루션을 선택하지 않을 것입니다.

다른 해결책은 다음과 같습니다 ~ 아니다 wav 파일을 리소스로 포함 시키지만 파일 시스템에서 자체 파일로 라이브를 유지하십시오. 이를 달성하려면 빌드 작업을 "컨텐츠"로 설정하고 "복사로 출력 디렉토리"설정을 "항상 복사"또는 "새로 사용하는 경우 복사"로 설정하십시오. 이렇게하면 컴파일러에 출력에 파일이 포함됩니다. 이 경우 파일의 위치에 대한 가정이 정확합니다.

요컨대 :

  • action = "content"빌드
  • output directory에 복사하십시오 = "항상 복사"또는 "최신 인 경우 복사"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top