2010-11-19 36 views
0

Excel 11'de bir form denetimi tıklatarak bir ses tetiklemeye çalışıyorum. Click olayı işleyicisi, panoda belirli bir metin bulursa sndPlaySound32 kullanarak bir ses çalmayı dener. .form kontrolü ile tetiklenen ses çalma denetimi

Ben fonksiyon sndPlaySound32 ilan etti ve eğer (kontrolünü sonra her şey gayet iyi çalışıyor ve ses oyunları tıkladığınızda sürece Excel ön uygulama olarak (basitleştirilmiş)

whatSound$ = "C:\WINDOWS\Media\Office97\Drop.wav" 
sndPlaySound32 whatSound$, &H0 

ile aramanıza ettik hedef metin, panoya bulunur), ancak eğer metin, tıklama gerçekleştiğinde Excel'in ön uygulama olmadığı Not Defteri gibi başka bir uygulamadan panoya getiriyorsam, o zaman kontrolün ilk tıklaması üretmez herhangi bir ses. Sonraki tıklamalar normal şekilde çalışır. Formdaki diğer olaylar bununla ilgili bir problem yaşamaz ve ilk tıklamaya normal şekilde yanıt vermeye devam eder.

Excel, ön uygulama olmadığında, ses denetimini ilk kez tıklatarak nasıl oynatabilirim?

Düzenleme 11/25/10: Yönetim Kurulu'nun çalışmalarını yapamıyorum. Yorum Ekle'yi tıklıyorum ancak yorumlarım gösterilmiyor, bu yüzden bu Boost'a bir cevap.

Sadece ilk tıklamayla Excel'i öne getirmekten daha derin bir şey olduğunu düşünüyorum, çünkü bu ilk tıklatma işlemi tarafından başarıyla tetiklenen diğer eylemlerin birkaçı vardır (başka bir uygulama önde iken) ve hepsi gayet iyi çalışıyorlar. Sadece sonraki tıklamalar kadar işe yaramaz playSound.

playSound komutunu, her tıklama ile gerçekleşmesi beklenen diğer eylemlerin (hem yazı tipi değişiklikleri, metin yeniden boyutlandırma, vb.) Hem önüne hem sonuna kadar taşımaya çalıştım ve ayrıca gecikmeler oluşturmayı denedim çeşitli yerlerde, ama neşe yok. Koddan geçersek, playSound prosedürü ilk tıklamaya doğru çağrılır ancak ses çıkarmaz.

+0

Fotoğrafı doğru şekilde alırsam, Notepad oda içi uygulama olduğunda, Excel'i tıklarsınız ve hiçbir şey olmuyor, ancak sonraki tıklamalar işe yarar. Tamam, buradaki sorun, ilk tıklamanın Excel'i odak haline getirmesi ve ardından Excel'in kontrolleri fare tıklamalarını kabul etmesidir. Bunun hakkında düşünmeliyim ... – bugmagnet

cevap

1

Burada bir çözüm olduğunu sanmıyorum. Bir uygulama, "odakta" olana kadar fare olaylarını kabul etmeyecektir. Not Defteri odakta ise, ilk tıklama ile odağı Excel'e aktarırsınız, daha sonra Excel'in olay işleyicileri devreye girer ve sonraki olaylara yanıt verir.

Tüm ekranın üzerine şeffaf bir pencere koyabilir ve bu bağlamda fare tıklamaları yorumlayabilir ve bunları alttaki uygun pencerelere aktarabilirsiniz. SMOP, sanırım.

0

Sonunda, basit, güvenilir ve çirkin bir çözüm buldum. İlk tıklamada sesi çalmayacağından, bir şans daha vereceğim.

whatSound$ = "C:\WINDOWS\Media\Office97\Drop.wav" 
sndPlaySound32 whatSound$, &H0 
sndPlaySound32 whatSound$, &H0 

Hala ilk PlaySound komutunu yok sayar, ama ikincisinde birinci tıklamada her zaman oynar: Yani şimdi, benim orijinal sonrası kodun yerine, bu gibi görünüyor.