2009-04-02 7 views
2

J'ajoute des fonctionnalités à une application Java existante déjà largement déployée. (Il y a donc des décisions de conception que je ne peux pas toucher à moins d'avoir une raison impérieuse.) L'application contrôle un PC qui diffuse de l'audio et du visuel sur un petit réseau de télévision local. À l'heure actuelle, il diffuse principalement des diapositives statiques, mais il peut également faire de la musique de fond à la discrétion du client. La musique de fond (CD, fichiers musicaux locaux, radio Internet, peu importe) est gérée par Windows Media Player.Contrôle de Windows Media Player par programmation, de préférence à partir de Java

Mon projet actuel consiste à ajouter de la narration aux diapositives statiques. Quand la narration est lue, j'ai besoin d'envoyer un signal STFU qui, temporairement, calme ou mute la sortie WMP. Donc, ma question centrale est: Quelle est la meilleure façon d'accomplir cela?

Je sais que WMP a une interface ActiveX, mais je ne suis pas expérimenté avec ActiveX/COM. Je peux (et je vais probablement) apprendre, certes, mais pour le moment, je ne suis pas bien placé pour faire la distinction entre des solutions faciles, des solutions techniquement réalisables mais douloureuses et des «solutions» qui sont en réalité des impasses.

Une solution basée sur Java nécessiterait-elle l'utilisation d'un pont Java-> ActiveX comme Jacob? Ou est-ce exagéré?

Ou est-ce que j'aboie complètement le mauvais arbre? Je suis certainement prêt à déployer entièrement de petits exécutables de ligne de commande écrits dans un autre langage, puis à y accéder via Runtime.exec(). Est-ce le genre de chose que (VisualBasic rend la saleté simple? (VB n'est pas dans ma compétence non plus, mais si c'est le bon outil pour ce travail, je vais apprendre .Je ne sais pas si c'est le bon outil Google m'a donné beaucoup d'exemples d'incorporation de WMP dans une interface graphique VB ; Script de ligne de commande VB, pas tellement.)

Enfin, un dernier point: l'instance WMP serait démarrée par l'utilisateur, pas démarrée par l'application Java. Je ne sais pas si cela fait une différence, mais je me suis dit que ça valait la peine d'être mentionné.

Je vous remercie d'avance pour tout aperçu que quelqu'un peut m'offrir.

Répondre

1

Votre meilleur pari est d'utiliser Jacob (ou un autre pont Java/COM); Je suppose que vous ne voulez pas simplement couper le volume du système.

+0

Affirmatif. Couper le volume du système couperait également la narration, ce qui irait à l'encontre du but. :-) – BlairHippo