2010-11-19 5 views
0

Je tente de déclencher un son en cliquant sur un contrôle de formulaire dans Excel 11. Le gestionnaire de l'événement click essaie de jouer un son en utilisant sndPlaySound32 s'il trouve un certain texte dans le presse-papiers .jouer le son déclenché en cliquant sur le contrôle de formulaire

J'ai déclaré la fonction sndPlaySound32, et l'appeler avec (simplifié)

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

Tant que Excel est l'application avant lorsque je clique sur le contrôle alors tout fonctionne très bien et les pièces sonores (si le le texte cible est trouvé dans le presse-papiers), mais si j'apporte le texte dans le presse-papier d'une autre application comme Notepad, où Excel n'est pas l'application frontale quand le clic se produit, le premier clic sur le contrôle ne produit pas tout son. Les clics ultérieurs fonctionnent normalement. Les autres événements sur le formulaire n'ont aucun problème avec cela et continuent à répondre normalement au premier clic.

Comment puis-je faire jouer le son au premier clic du contrôle lorsque Excel n'est pas l'application frontale?

Édition du 25/11/10: Je ne peux pas faire en sorte que le tableau Commentaires fonctionne. Je clique sur Ajouter un commentaire, mais mes commentaires ne sont pas affichés, c'est donc une réponse à Boost.

Je pense que c'est quelque chose de plus profond qu'appliquer Excel au premier clic, car il y a plusieurs autres actions qui sont déclenchées avec succès par ce premier clic sur le contrôle (alors qu'une autre application est en face), ils fonctionnent tous très bien. C'est seulement le playSound qui ne fonctionne pas avant les clics ultérieurs. J'ai essayé de déplacer la commande playSound à la fois vers l'avant et vers la fin de la liste des autres actions (par exemple, les changements de police, le redimensionnement du texte, etc.) qui sont censées se produire à chaque clic, dans divers endroits, mais pas de joie. Si je parcours le code, la procédure playSound est appelée correctement au premier clic, mais elle ne produit pas de son.

+0

Si je reçois l'image correctement, lorsque le Bloc-notes est l'application de mise au point, vous cliquez sur Excel et rien ne se passe, mais les clics suivants fonctionnent. D'accord, le problème ici est que ce premier clic met Excel au point, et les contrôles d'Excel acceptent les clics de souris. Doit avoir à penser à cela ... – bugmagnet

Répondre

1

Je ne pense pas qu'il y ait un correctif ici. Une application n'acceptera pas les événements de souris tant qu'elle n'est pas "mise au point". Si le Bloc-notes est actif, vous allez en transférer le focus vers Excel en un clic, puis les gestionnaires d'événements d'Excel entreront en jeu et répondront aux événements suivants.

Vous pourriez (et je ne sais pas si c'est même possible) mettre une fenêtre transparente sur tout l'écran et interpréter les clics de souris dans ce contexte, et les passer aux fenêtres sous-jacentes appropriées. SMOP, je suppose.

0

J'ai finalement trouvé une solution de contournement qui est simple, fiable et laide. Comme il ne jouera pas le son au premier clic, je lui donnerai une autre chance. Alors maintenant, à la place du code dans mon message d'origine, il ressemble à ceci:

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

Il ignore encore la première commande playSound, mais il joue le second à chaque fois que le premier clic.

Questions connexes