2009-11-14 4 views
3

Je cours Win Vista, en bas à droite de la fenêtre il y a une icône de haut-parleur à côté de l'horloge, je peux cliquer dessus et régler le volume, je me demande s'il y a un moyen de faire ceci automatiquement. Par exemple, quand mon programme Java démarre, il fait passer le volume à 80, et quand le programme se termine, il ramène le volume au niveau d'origine, cela ne me dérange pas d'utiliser Runtime.getRuntime(). Exec() s'il y a un façon d'atteindre cet effet.Comment régler le volume du haut-parleur à partir du programme Java?

Répondre

2

J'utilise le code suivant pour simuler un réglage du volume:

Robot robot;    // Set speaker volume to 80 
try 
{ 
    robot=new Robot(); 
    robot.mouseMove(1828,1178); 
    robot.mousePress(InputEvent.BUTTON1_MASK); 
    robot.mouseRelease(InputEvent.BUTTON1_MASK); 
    robot.delay(90); 
    robot.mouseMove(1828,906); 
    robot.mousePress(InputEvent.BUTTON1_MASK); 
    robot.mouseRelease(InputEvent.BUTTON1_MASK); 
    robot.delay(260); 
    robot.mousePress(InputEvent.BUTTON1_MASK); 
    robot.mouseRelease(InputEvent.BUTTON1_MASK); 
} 
catch (AWTException ex) 
{ 
    System.err.println("Can't start Robot: " + ex); 
    System.exit(0); 
} 

Et cela a fonctionné!

+3

wow c'est intense :) – rogerdpack

+7

C'est une très mauvaise solution. –

+0

Votre robot est tellement cool, l'homme ... moi gusta! –

1

L'une des prémisses principales de Java est qu'une application écrite dessus devrait fonctionner sur n'importe quelle plate-forme. C'est pourquoi ils ont abandonné la prise en charge des variables d'environnement dans le SDK Java 1.4, mais l'ont réactivé plus tard. C'est pourquoi il n'y a aucun moyen de nettoyer la console Java avec une commande comme "cls", car cela pourrait fonctionner sur certaines plateformes mais pas sur d'autres.

Cela étant dit, vous ne serez pas en mesure de faire à partir de Java. Vous pouvez créer une DLL JNI en C++ ou une application en C++ ou en C# pour cela.

En savoir plus sur le faire en C++:

change volume win32 c++

+0

Vous ne pouvez pas le faire en C# sans P/Invoke ... – EricSchaefer

+0

L'argumentation concernant le contrôle de la console est rompue. Il n'y a rien de mal avec les séquences ANSI, sauf que Windows ne les prend pas en charge. –

+0

@Thorbjorn Je comprends que mon exemple n'est pas très bon pour ce cas. –

1

Jetez un oeil dans l'API javax.sound. Here est un tutoriel à ce sujet, en particulier here (dans le chapitre Modification du volume d'une ligne), vous pouvez lire comment régler le volume. Cette connaissance devrait donner assez de mots-clés Google pour trouver des exemples.

Questions connexes