快速业务通道

用Java调用VC音量控制程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

用Java调用VC音量控制程序

时间:2010-12-14

前言

本文通过Java的Runtime接口来实现调用其他语言实现的应用程序,进而来实现对计算机硬件信息的监控和控制.本文是多媒体信息系统的一个部分,就是调整计算机音量。

使用VC编写音量控制程序

本控制示例使用VC6.0编写,主要是调用系统的API来实现,

mixerGetLineInfo 获取Master Volume Control.

mixerGetControlDetails 获取 Volume Control 信息

mixerSetControlDetails 设置 Volume Control 信息

最终编译成Console类型的Dos执行的程序VolumeControl.exe。这个程序实现三个功能:

1.获取音量 VolumeControl.exe 0

2.增加音量 VolumeControl.exe 1

3.减少音量 VolumeControl.exe 2

用Java调用VC音量控制程序(2)

时间:2010-12-14

下面我们用Java设计创建一个Panel用于显示音量并调用应用程序实现对音量的实际控制,本例中使用自定义Progress显示VolumeTracker.java

实现原理如下:

使用一个线程动态刷新页面,主线程用来实现对音量的控制.其实现代码如下:

import java.awt.*; import java.awt.font.*; import java.awt.geom.*; import java.awt.event.*; import java.text.AttributedString; import java.text.AttributedCharacterIterator; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.*; import javax.swing.event.*; import java.io.*; public class VolumeTracker extends JPanel implements Runnable {   String welcomeStr = "Welcome to Java Sound";   Thread pbThread;   Color background = Color.white;   //new Color(20, 20, 20);   Color jfcBlue = Color.blue;   //new Color(204, 204, 255);   Color jfcDarkBlue = jfcBlue.darker();   Font font24 = new Font("serif", Font.BOLD, 24);   Font font28 = new Font("serif", Font.BOLD, 28);   Font font42 = new Font("serif", Font.BOLD, 42);   FontMetrics fm28, fm42;   String errStr=null;   String currentName=null;   double duration = 100.0;   double seconds = 82.0;   boolean midiEOM, audioEOM;   public VolumeTracker()   {    fm28 = getFontMetrics(font28);    fm42 = getFontMetrics(font42);    initVolume();    start();   }   private void initVolume()   {    try     {      //这一段小程序实现对VC创建程序的调用      Runtime rt = Runtime.getRuntime(); //Time and Date.      //mngPathTool类,提供了一个获取当前路径的方法      mngPathTool tool = new mngPathTool();      String sexec = tool.getCurPath()+ "\\binex\\VolumeControl.exe 0";      Process child = rt.exec(sexec);      //获取控制台输出的内容,进而获得音量的大小      InputStreamReader reader = new InputStreamReader(child.getInputStream());      char[] chr = new char[5];      reader.read(chr) ;      String s="";      for(int i=0;i<5;i++)      {       if(chr[i]>=''0'' && chr[i]<=''9'') s+=chr[i];      }      //System.out.println(s);      Integer nVolume = new Integer(s);      seconds = nVolume.intValue();      child.waitFor();      //这一段小程序实现对VC创建程序的调用     }    catch(Exception e1)     {      e1.printStackTrace();     }   }   public void paint(Graphics

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号