Delphi Can
Uygulama içi ses - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Uygulama içi ses (/showthread.php?tid=4939)



Uygulama içi ses - mcuyan - 08-06-2020

Merhaba arkadaşlar.

Kafama bir soru takıldı. Billdiğiniz üzere Delphide yazılan programlar Windwos da tanıtılmış sesleri olaylara göre çalıyor.

Örneğin uygulama içinde ENTER tuşuna bastığınızda Blingg diye bir ses çalıoyr (Windows da tanıtılmış ses)..

Bunu uygulama içinde komple iptal edip başka bir ses çaldırma işi ile ilgilenen oldu mu hiç yada aklına bir fikir gelen?


Cvp: Uygulama içi ses - shooterman - 08-06-2020

(08-06-2020, Saat: 15:35)mcuyan Adlı Kullanıcıdan Alıntı: Merhaba arkadaşlar.

Kafama bir soru takıldı. Billdiğiniz üzere Delphide yazılan programlar Windwos da tanıtılmış sesleri olaylara göre çalıyor.

Örneğin uygulama içinde ENTER tuşuna bastığınızda Blingg diye bir ses çalıoyr (Windows da tanıtılmış ses)..

Bunu uygulama içinde komple iptal edip başka bir ses çaldırma işi ile ilgilenen oldu mu hiç yada aklına bir fikir gelen?
Selamlar
Ben genelde onpresskey eventına aşağıdaki şekilde bir kodla yapıyorum.

sndPlaySound('D:\batarya_izleme\alarm.wav', SND_NODEFAULT Or SND_ASYNC Or SND_LOOP);



Uygulama içi ses - mcuyan - 08-06-2020

hocam öncelikle cevap için teşekkürler.

boş forma bi edit yerleştirin, onkeypress olayına


 if key=#13  then

 playsound('C:\windows\media\tada.wav',0,SND_ASYNC );


yazdığınızda hem beep sesi hemde sizin kodda belirttiğiniz "tada" sesi geliyor. Ben beep sesinin hiç çıkmasını istemiyorum.


Cvp: Uygulama içi ses - shooterman - 08-06-2020

(08-06-2020, Saat: 16:00)mcuyan Adlı Kullanıcıdan Alıntı: hocam öncelikle cevap için teşekkürler.

boş forma bi edit yerleştirin, onkeypress olayına


 if key=#13  then

 playsound('C:\windows\media\tada.wav',0,SND_ASYNC );


yazdığınızda hem beep sesi hemde sizin kodda belirttiğiniz "tada" sesi geliyor. Ben beep sesinin hiç çıkmasını istemiyorum.

o halde kodu lütfen şu şekilde düzenleyin. Sorun olmadığını göreceksiniz.
SystemParametersInfo(SPI_SETBEEP, 0, nil, SPIF_SENDWININICHANGE);
if key=#13 then
playsound('C:\windows\media\tada.wav',0,SND_ASYNC );

aşağıdaki kodlarla enable ve disable edebilirsiniz.
//Disable system beep
SystemParametersInfo(SPI_SETBEEP, 0, nil, SPIF_SENDWININICHANGE);

//Enable system beep
SystemParametersInfo(SPI_SETBEEP, 1, nil, SPIF_SENDWININICHANGE);


Uygulama içi ses - mcuyan - 08-06-2020

Walla ne kadar teşekkür etsem azdır tam olarak istediğim buydu hocam.

Fakat 1 kere sesi kapatınca tüm formlarda hatta sistemi kapatı açınca da komple kesiliyor. sanırım direk windowsun sesini kapatıyor? doğru mu anlamışım.. sadece o oturum için yapılan bir olay değil tüm zamanları etkliyor?


Cvp: Uygulama içi ses - shooterman - 08-06-2020

(08-06-2020, Saat: 21:09)mcuyan Adlı Kullanıcıdan Alıntı: Walla ne kadar teşekkür etsem azdır tam olarak istediğim buydu hocam.

Fakat 1 kere sesi kapatınca tüm formlarda hatta sistemi kapatı açınca da komple kesiliyor. sanırım direk windowsun sesini kapatıyor? doğru mu anlamışım.. sadece o oturum için yapılan bir olay değil tüm zamanları etkliyor?

Sanırım öyle. Bu sebeple, formun kapanışından öncei tekrar enable yapmanız uygun olacaktır.


Uygulama içi ses - mcuyan - 08-06-2020

malesef sıkıntı oldu. Fakat aşağıdaki kod ile çözdüm olayı. aslında VK_Return da bitti iş Smile


 if (Key = #13)  then
 begin
   Key := #0;
   Perform(CM_DIALOGKEY, VK_RETURN, 0);
   Button3.Click;
 end;



Cvp: Uygulama içi ses - shooterman - 08-06-2020

(08-06-2020, Saat: 21:39)mcuyan Adlı Kullanıcıdan Alıntı: malesef sıkıntı oldu. Fakat aşağıdaki kod ile çözdüm olayı. aslında VK_Return da bitti iş Smile


 if (Key = #13)  then
 begin
   Key := #0;
   Perform(CM_DIALOGKEY, VK_RETURN, 0);
   Button3.Click;
 end;

Geçmiş olsun o halde.


Uygulama içi ses - emozgun - 09-06-2020

Merhabalar ses konusu ile ilgili yeni konu açmamak için buraya yazıyorum. yanlış olmamıştır İnşallah.

Delphi 10 Seattle FMX uygulamasında  MessageDlg (ve eskiden Application.MessageBox) kullanıyordum fakat OK, Cancel, Yes, No düğmeleri Windows'ta Türkçe çıkmadığı için kendi function'mı yazdım. İçinde de ses çıkarması için "System.SysUtils.Beep;" ekledim. Fakat artık birkaç defa mesaj çağrıldıktan sonra hafızada Windows Audio Device Graph Isolation sürekli büyümeye başlıyor. Birkaç saat sonra yüzlerce MB oluyor. MessageDlg kullanırken böyle değildi. İleride uygulamayı dağıtınca hafıza miktarı düşük bilgisayarlarda problem olmasından endişeleniyorum. İleriki sürümlerde böyle bir problem var mı? veya alternatif tavsiye edebilir misiniz?