2010-11-19 12 views
0

Ich versuche, einen Sound durch Klicken auf ein Formular Steuerelement in Excel 11. Der Handler für das Click-Ereignis versucht, einen Sound mit SndPlaySound32 zu spielen, wenn es bestimmten Text in der Zwischenablage findet .spielen Sound ausgelöst durch Klick auf Formularsteuerung

Ich habe die Funktion sndPlaySound32 erklärt, und nennen Sie es mit (vereinfacht)

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

Solange Excel die vordere App ist, wenn ich auf das Steuerelement klicken dann funktioniert alles einwandfrei und die Klangwiedergabe (wenn die Zieltext befindet sich in der Zwischenablage), aber wenn ich den Text von einer anderen Anwendung wie Notepad in die Zwischenablage bringe, wo Excel nicht die Front-App ist, wenn der Klick erfolgt, dann wird der erste Klick auf das Steuerelement nicht erzeugt irgendein Ton. Nachfolgende Klicks funktionieren normal. Andere Ereignisse auf dem Formular haben damit kein Problem und reagieren normal auf den ersten Klick.

Wie kann ich den Sound beim ersten Klick des Steuerelements wiedergeben, wenn Excel nicht die Front-App ist?

Edit 11/25/10: Ich kann nicht die Tafel Kommentare funktionieren. Ich klicke auf "Kommentar hinzufügen", aber meine Kommentare werden nicht angezeigt. Dies ist eine Antwort auf Boost.

Ich denke, es ist etwas tiefer als nur Excel mit dem ersten Klick nach vorne zu bringen, weil es mehrere andere Aktionen gibt, die durch diesen ersten Klick auf das Steuerelement erfolgreich ausgelöst werden (während eine andere App vorne liegt), und sie alle funktionieren gut. Es ist nur der playSound, der erst nach weiteren Klicks funktioniert.

Ich habe versucht, den playSound-Befehl sowohl nach vorne als auch zum Ende der Liste anderer Aktionen (z. B. Schriftartänderungen, Textgrößenanpassung usw.) zu verschieben, die bei jedem Klick auftreten sollten, und versuchte Verzögerungen zu setzen an verschiedenen Orten, aber keine Freude. Wenn ich durch den Code gehe, wird die playSound-Prozedur beim ersten Klick korrekt aufgerufen, aber es wird kein Sound erzeugt.

+0

Wenn ich das Bild richtig bekomme, wenn Notepad die In-Fokus-App ist, klicken Sie auf Excel und nichts passiert, aber nachfolgende Klicks funktionieren. Okay, das Problem hier ist, dass der erste Klick Excel in den Fokus bringt und dann Excel-Steuerelemente die Mausklicks akzeptieren. Muss darüber nachdenken ... – bugmagnet

Antwort

1

Ich glaube nicht, dass es hier eine Lösung gibt. Eine Anwendung akzeptiert keine Mausereignisse, bis sie "im Fokus" ist. Wenn der Editor im Fokus ist, übertragen Sie den Fokus mit dem ersten Klick von dort auf Excel. Die Ereignisbehandlungsroutinen von Excel werden dann verwendet und reagieren auf nachfolgende Ereignisse.

Sie könnten (und ich weiß nicht, ob es überhaupt möglich ist) ein transparentes Fenster über den gesamten Bildschirm legen und Mausklicks in diesem Kontext interpretieren und an die entsprechenden darunter liegenden Fenster übergeben. SMOP, nehme ich an.

0

Ich habe endlich eine Problemumgehung gefunden, die einfach, zuverlässig und hässlich ist. Da es den Sound beim ersten Klick nicht wiedergeben wird, gebe ich ihm nur eine weitere Chance. So, jetzt anstelle des Codes in meinem ursprünglichen Beitrag, sieht es wie folgt aus:

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

Es ignoriert noch den ersten Befehl playsound, aber es spielt die zweite jedes Mal auf dem ersten Klick.

Verwandte Themen