亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用Java調用VC音量控制程序

2019-11-18 15:41:18
字體:
來源:轉載
供稿:網友

  前言

  本文通過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設計創建一個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()+ "http://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 g)
 {
  //畫圖來實現百分比Tracker
  Graphics2D g2 = (Graphics2D) g;
  Dimension d = getSize();
  g2.setBackground(background);
  g2.clearRect(0, 0, d.width, d.height);
  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  g2.setColor(jfcBlue);
  double tseconds = duration-seconds;
  if (tseconds > 0.0)
  {
   int num = 20;
   int progress = (int) (tseconds / duration * num);
   double hh = ((double) (d.height - 4) / (double) num);
   double ww = (int)(d.width-4);
   double x = 0.0;
   for ( ; x < progress; x+=1.0)
   {
    g2.fill(new Rectangle2D.Double(d.width-ww-2, x*hh+2, ww, hh));
    g2.fill3DRect((int)(d.width-ww-2),(int) (x*hh+2),(int) ww, (int)hh,true);
   }
   g2.setColor(jfcDarkBlue);
   for ( ; x < num; x+=1.0)
   {
    g2.fill(new Rectangle2D.Double(d.width-ww-2, x*hh+2, ww, hh));
    g2.fill3DRect((int)(d.width-ww-2),(int) (x*hh+2),(int) ww, (int)hh,true);
   }
  }
 }

 public void start()
 {
  pbThread = new Thread(this);
  pbThread.setName("PlaybackMonitor");
  pbThread.start();
 }

 public void stop()
 {
  if (pbThread != null)
  {
   pbThread.interrupt();
  }
  pbThread = null;
 }

 public void run()
 {
  while (pbThread != null)
  {
   try
   {
    pbThread.sleep(99);
   }
   catch (Exception e)
   {
    break;
   }
   repaint();
  }
  pbThread = null;
 }

 public void addVolume()
 {
  changeVolume(false);
  initVolume();
 }

 public void minusVolume()
 {
  changeVolume(true);
  initVolume();
 }

 //control sound volume.

 private void changeVolume(boolean bIsMinus)
 {
  try
  {
   Runtime rt = Runtime.getRuntime();
   //Sound Control mngPathTool
   tool = new mngPathTool();
   String sexec;
   if(bIsMinus)
    sexec= tool.getCurPath()+ "http://binex//VolumeControl.exe 2";
   else
    sexec= tool.getCurPath()+ "http://binex//VolumeControl.exe 1";
    rt.exec(sexec);
  }catch(Exception e1){e1.printStackTrace(); }
 }
}
// End VolumeTracker
  創建一個JFrame用于顯示 VolumeControl.java

  設置頁面背景,創建顯示上述Panel的容器.

  創建對話框用于彈出顯示音量控制界面 JVolumeDlg.java

  創建一個對話框來顯示上個步驟生成的Frame,并提供事件控制容器.

  事件流向---> JVolumeDlg -- VolumeControl --- VolumeTracker

  總結

  Java Runtime 接口提供了調用其他應用程序的接口,通過這個接口,可以實現對計算機硬件的控制和監控. 同時通過界面線程可以實現相對復雜的應用程序界面的開發。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲春色另类小说| 欧美黑人巨大xxx极品| 成人黄色免费网站在线观看| 亚洲精品日韩欧美| 亚洲成人精品久久| 亚洲欧美国产va在线影院| 亚洲三级黄色在线观看| 日韩高清中文字幕| 欧美疯狂性受xxxxx另类| 国产精品99免视看9| 综合av色偷偷网| 亚洲成人在线网| 日本免费在线精品| 91爱视频在线| zzjj国产精品一区二区| 国产一区二区在线免费视频| 亚洲一区中文字幕在线观看| 亚洲欧美日本精品| 久久精品成人欧美大片| 国产一区二区三区直播精品电影| 成人激情电影一区二区| 成人日韩在线电影| 亚洲成人久久久久| 欧美日韩美女在线| 国产精品美女免费视频| 精品免费在线视频| 美日韩丰满少妇在线观看| 久久精品视频中文字幕| 国产精品福利在线观看| 亚洲一区免费网站| 亚洲欧美国产另类| 国产精品福利在线观看网址| 日韩欧美在线免费| 亚洲成人黄色网址| 中文字幕少妇一区二区三区| 狠狠躁天天躁日日躁欧美| 中文字幕不卡av| 97成人精品视频在线观看| 精品中文字幕视频| 亚洲国产美女久久久久| 欧美高跟鞋交xxxxhd| 日韩视频亚洲视频| 日本一区二区在线免费播放| 久久天堂电影网| 国内精品视频久久| 亚洲第一男人天堂| 亚洲图中文字幕| 欧美极品在线视频| 日本伊人精品一区二区三区介绍| 欧美福利视频网站| 久久综合久中文字幕青草| wwwwwwww亚洲| 精品久久国产精品| 欧美精品久久久久久久免费观看| 性视频1819p久久| 亚洲人午夜精品| 国产免费一区二区三区香蕉精| 91黄色8090| 国产精品久久久久77777| 国内精品久久影院| 成人久久一区二区三区| 国产99久久精品一区二区| 国产精品久久久久久久久借妻| 国精产品一区一区三区有限在线| 国产精品女人久久久久久| 乱亲女秽乱长久久久| 中文字幕亚洲天堂| 亚洲色图五月天| 国产精品视频久久久| 国模精品系列视频| 日韩在线视频免费观看高清中文| 欧美午夜久久久| 亚洲欧美在线磁力| 日韩电影在线观看免费| 日韩欧美在线网址| 欧美一乱一性一交一视频| 久久影院资源站| 欧美一级淫片播放口| 亚洲精品成人网| 91av视频在线免费观看| 国产精品第100页| 成人国产亚洲精品a区天堂华泰| 久久成人这里只有精品| 色综合视频一区中文字幕| 亚洲一区二区少妇| 亚洲人成电影网| 国产午夜精品理论片a级探花| 亚洲视频777| 精品美女国产在线| 精品自拍视频在线观看| 久久韩剧网电视剧| 2018中文字幕一区二区三区| 激情懂色av一区av二区av| 美女av一区二区| 成人福利在线观看| y97精品国产97久久久久久| 欧美在线视频一区| 欧美中文字幕第一页| 久久久久久九九九| 日韩成人中文字幕在线观看| 久久91亚洲精品中文字幕| 91av在线免费观看| 欧美成人在线网站| 亚洲欧美日韩高清| 91国内精品久久| 国产不卡av在线| 欧美日韩福利电影| 久久精视频免费在线久久完整在线看| 78色国产精品| 欧美激情xxxxx| 欧美性色视频在线| 成人激情在线观看| 91精品视频在线播放| 亚洲男人天堂手机在线| 亚洲最大激情中文字幕| 一本久久综合亚洲鲁鲁| 欧美日韩午夜视频在线观看| www.午夜精品| 亚洲国产精品电影| 亚洲a在线观看| 疯狂做受xxxx欧美肥白少妇| 成人av.网址在线网站| 欧美疯狂xxxx大交乱88av| 国产精品白嫩美女在线观看| 日韩成人在线视频观看| 亚洲精品在线不卡| 免费不卡欧美自拍视频| 国产成人在线一区二区| 欧美午夜宅男影院在线观看| 亚洲精品国精品久久99热| 日韩激情第一页| 日韩中文综合网| 午夜精品久久久久久久99热| 国产精品久久久久一区二区| 91精品久久久久久久久久久久久| 美女啪啪无遮挡免费久久网站| 久久久午夜视频| 成人网在线免费看| 欧美日韩美女视频| 亚洲男人天堂九九视频| 亚洲欧美在线一区二区| 91av在线免费观看| 日日噜噜噜夜夜爽亚洲精品| 免费不卡欧美自拍视频| 98精品在线视频| 久久久久久久久久久亚洲| 国产精品黄色av| 国产一区视频在线播放| 亚洲欧洲视频在线| 91精品免费久久久久久久久| 色哟哟网站入口亚洲精品| 亚洲一区二区三区视频播放| www.日韩不卡电影av| 亚洲成在人线av| 欧美性猛交xxxx偷拍洗澡| 在线亚洲男人天堂| 欧美乱妇高清无乱码| 亚洲色图25p| 精品久久久久久久久久ntr影视| 日韩成人激情影院| 午夜精品蜜臀一区二区三区免费| 精品亚洲男同gayvideo网站| xxxxx91麻豆| 国产精品爱啪在线线免费观看|