java调用VBScript打开关闭CD,java调用vbscriptcd,java本身没有和cd驱
分享于 点击 41919 次 点评:230
java调用VBScript打开关闭CD,java调用vbscriptcd,java本身没有和cd驱
java本身没有和cd驱动交互的方法。不过在windows下可以通过调用VB脚本实现。
我们需要创建一个临时的vbs脚本文件然后执行这个脚本。
import java.io.File;import java.io.FileWriter;public class CDUtils { private CDUtils() { } public static void open(String drive) { try { File file = File.createTempFile("realhowto",".vbs"); file.deleteOnExit(); FileWriter fw = new java.io.FileWriter(file); String vbs = "Set wmp = CreateObject(\"WMPlayer.OCX\") \n" + "Set cd = wmp.cdromCollection.getByDriveSpecifier(\"" + drive + "\") \n" + "cd.Eject"; fw.write(vbs); fw.close(); Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor(); // thanks to TrueJavaProgammer for the waitFor() tip! // Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor(); // Thread.sleep(2000); } catch(Exception e){ e.printStackTrace(); } } public static void close(String drive) { try { File file = File.createTempFile("realhowto",".vbs"); file.deleteOnExit(); FileWriter fw = new FileWriter(file); // to close a CD, we need eject two times! String vbs = "Set wmp = CreateObject(\"WMPlayer.OCX\") \n" + "Set cd = wmp.cdromCollection.getByDriveSpecifier(\"" + drive + "\") \n" + "cd.Eject \n " + "cd.Eject "; fw.write(vbs); fw.close(); Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor(); // thanks to TrueJavaProgammer for the waitFor() tip! // Runtime.getRuntime().exec("wscript "+ file.getPath()); // Thread.sleep(2000); } catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args){ javax.swing.JOptionPane.showConfirmDialog((java.awt.Component) null, "Press OK to open CD", "CDUtils", javax.swing.JOptionPane.DEFAULT_OPTION); CDUtils.open("D:\\"); javax.swing.JOptionPane.showConfirmDialog((java.awt.Component) null, "Press OK to close CD", "CDUtils", javax.swing.JOptionPane.DEFAULT_OPTION); CDUtils.close("D:\\"); }}
注意:这段代码依赖于windows Media Player 7或以上版本
用户点评