0

次のコードを使用して、PlaySound を使用して WAV ファイルを再生する簡単なアプリケーションを開発しています。

#region DllImport
private enum Flags
{
    SND_SYNC = 0x0000,
    SND_ASYNC = 0x0001,
    SND_NODEFAULT = 0x0002,
    SND_MEMORY = 0x0004,
    SND_LOOP = 0x0008,
    SND_NOSTOP = 0x0010,
    SND_NOWAIT = 0x00002000,
    SND_ALIAS = 0x00010000,
    SND_ALIAS_ID = 0x00110000,
    SND_FILENAME = 0x00020000,
    SND_RESOURCE = 0x00040004
}
[DllImport("CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true)]
private extern static int MobilePlaySound(string szSound, IntPtr hMod, int flags);
public void PlaySound(string fileName)
{
    MobilePlaySound(fileName, IntPtr.Zero, (int)Flags.SND_SYNC);
}
#endregion

public Form1()
{
    InitializeComponent();
    openFileDialog1.ShowDialog();
    PlaySound(openFileDialog1.FileName);
}

しかし、それを実行して WAV ファイル (2 分の音声) を選択すると、何も聞こえませんでした。

私は何をする必要がありますか?ありがとう。

4

2 に答える 2

1

curtiskが指摘しているように、を使用SND_FILENAMEして、ファイル名を渡していることをAPIに通知する必要があります。さらに、PlaySoundメソッドには戻り値があることに注意してください。何が返されるかを確認する価値があります。MSDNのドキュメントによると、成功した場合は0を返し、失敗した場合はゼロ以外を返します。

于 2009-11-16T14:16:28.277 に答える
1

SND_FILENAMEの代わりにフラグを使用する必要SND_SYNCがあります。ファイルを指定しているため、それを試して、より良い結果が得られるかどうかを確認してください...

于 2009-11-15T05:00:44.960 に答える