2016-11-25 12 views
1

Я сделал гудок с помощьюКак программно переключаться между звуком и отключенным режимом?

[DllImport("KERNEL32.DLL")] 
extern public static void Beep(int freq, int dur); 

// and 

Beep(2222, 55); 
Beep(3333, 55); 

Я привил этот код (Beep (частота, Твердая)) почти hundread раз здесь и там (с различной частотой, длительностью и времени).

Теперь я хочу программно переключаться между Sound и Mute.

я мог сделать это с чем-то вроде

if (my_Flag) 
{ 
    Beep(2222, 55); 
    Beep(3333, 55); 
} 

Она должна быть кропотливая работа, чтобы сделать. Есть ли лучшие идеи?

Спасибо.

+1

Если вы использовали «магические числа», как вы показываете в своем примере, вам нужно выполнить «утомительную работу». В то время как на нем лучше определите некоторую GLOBAL-переменную, которую вы можете программно изменить в своем коде и использовать для замены «магических чисел» – Steve

+0

Я сомневаюсь, что есть способ избежать того, что вы подразумеваете под утомительной работой, поскольку нет перегрузки ' Beep'-method, который исключает логическое значение, указывающее, должен ли он выдавать звуковой сигнал или нет, поэтому вам нужно проверить это самостоятельно. – HimBromBeere

+0

Если бы я был вами, я бы создал собственную (singleton class +) функцию (int, int), которая вызывается Beep из Kernel32 сама ... Тогда у вас будет гораздо меньше проблем с чем-то вроде этого. Тем не менее, у вас не будет другого пути, а затем реорганизуйте это, я думаю ... – TripleEEE

ответ

4

Если все определено как метод Beep(x,y), вы можете написать собственный метод, а затем Refactor-> переименовать все методы на MyBeep(x,y).

public void MyBeep(int freq, int dur) 
{ 
    if(myFlag) 
     Beep(freq, dur); 
} 
+1

Хмммм Звучит неплохо. Хотя я смотрю на космический челнок tech. Хорошо, я попробую. Я новичок, вы можете легко это узнать с моим вопросом. Ваш ответ мне дорог. Благодарю. Tatranskymedved – Jason

+0

Не проблема. =) – Tatranskymedved

+0

Работает отлично !! Еще раз спасибо. – Jason