Мне нужно воспроизвести звук при нажатии кнопки. Я нашел эту dll, которая находится в C++. Поэтому я использую p invoke
, но ошибка выскочит:PlaySound WinCE
ошибки 2 лучшие перегруженный матч метода для 'WinCE.Sound.PlaySound (строка, System.IntPtr, INT)' имеют некоторые недопустимые аргументы C: \ Пользователи \ Феро \ Documents \ маршрутный загрузчик-рекордер \ WinCE \ Sound.cs 44 17 WinCE
А также это:
Ошибка 3 Аргумент '3': не удается преобразовать из «WinCE.PlaySoundFlags 'to ' int 'C: \ Users \ Fero \ Do cuments \ route-loader-recorder \ WinCE \ Sound.cs 44 51 WinCE
Любые мысли?
Мой код:
namespace Sound
{
public enum PlaySoundFlags : int {
SND_SYNC = 0x0, // play synchronously (default)
SND_ASYNC = 0x1, // play asynchronously
SND_NODEFAULT = 0x2, // silence (!default) if sound not found
SND_MEMORY = 0x4, // pszSound points to a memory file
SND_LOOP = 0x8, // loop the sound until next sndPlaySound
SND_NOSTOP = 0x10, // don't stop any currently playing sound
SND_NOWAIT = 0x2000, // don't wait if the driver is busy
SND_ALIAS = 0x10000, // name is a registry alias
SND_ALIAS_ID = 0x110000,// alias is a predefined ID
SND_FILENAME = 0x20000, // name is file name
SND_RESOURCE = 0x40004, // name is resource name or atom
};
public class Sound
{
[DllImport("winmm.dll", SetLastError = true)]
public static extern int PlaySound(
string szSound,
IntPtr hModule,
int flags);
public static void Beep() {
Play(@"\Windows\Voicbeep");
}
public static void Play(string fileName) {
try {
PlaySound(fileName, IntPtr.Zero, (PlaySoundFlags.SND_FILENAME | PlaySoundFlags.SND_SYNC));
} catch (Exception ex) {
MessageBox.Show("Can't play sound file. " + ex.ToString());
}
}
}
}
@ctacke Это чистый вопрос P/Invoke, и вы не должны удалять этот тег –