EjectDrive em java

Propaganda
package gerenciador;
import
import
import
import
import
import
java.io.BufferedReader;
java.io.File;
java.io.FileWriter;
java.io.InputStreamReader;
java.util.ArrayList;
java.util.List;
public class EjectDrive {
// Array contendo as letras das unidades de CD/DVD
private List<String> driver = new ArrayList<String>();
public EjectDrive() {
this.getDriver();
}
// Método utilizado para executar os scripts em VB. script Código em
VB a
// ser executado. Retorna toda a saída da execução.
java.io.IOException
private String executeVBScript(String script) {
String output = "";
String line = null;
try {
File f = File.createTempFile("tmp", ".vbs");
f.deleteOnExit();
FileWriter fw = new FileWriter(f);
fw.write(script);
fw.close();
Process p = Runtime.getRuntime().exec(
"cscript //NoLogo " + f.getPath());
BufferedReader input = new BufferedReader(new
InputStreamReader(
p.getInputStream()));
while ((line = input.readLine()) != null) {
output += line;
}
input.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return output;
}
// Método para checar as unidades existentes.
private void getDriver() {
StringBuilder sb = new StringBuilder();
sb.append("Const DriveTypeCDROM = 4\n");
sb.append("Set oFSO =
Wscript.CreateObject(\"Scripting.FileSystemObject\")\n");
sb.append("Set oDrives = oFSO.Drives\n");
sb.append("For Each Drive in oDrives\n");
sb.append("If Drive.DriveType = DriveTypeCDROM Then Wscript.Echo
Drive.DriveLetter End If\n");
sb.append("Next");
String dr = executeVBScript(sb.toString());
for (int i = 0; i < dr.length(); i++) {
driver.add(dr.substring(i, i + 1));
}
}
// Método para abrir/fechar a bandeja do CD/DVD com opção do usuário
// fecha-lá. drv Letra da unidade para abrir. msg Mensagem
perguntando se
// quer fechar. title Título da Mensagem.
@SuppressWarnings("unused")
public void eject(String drv, String msg, String title) {
if (driver.contains(drv)) {
StringBuilder sb = new StringBuilder();
sb.append("Set oWMP = CreateObject(\"WMPlayer.OCX.7\")\n");
sb.append("Set oCD =
oWMP.CdromCollection.getByDriveSpecifier(\"");
sb.append(drv);
sb.append(":\\\")\n");
sb.append("oCD.Eject\n");
if (msg != null && title != null) {
sb.append("If vbOK = MsgBox(\"");
sb.append(msg);
sb.append("\", vbOKCancel, \"");
sb.append(title);
sb.append("\") Then\noCD.Eject\nEnd If");
}
String dr = executeVBScript(sb.toString());
} else {
throw new IllegalArgumentException("Unidade " + drv
+ " não encontrada");
}
}
// Método para abrir/fechar a bandeja do CD/DVD. drv Letra da unidade
para
// abrir.
public void eject(String drv) {
eject(drv, null, null);
}
// Método para abrir todas as bandejas de CD/DVD
@SuppressWarnings("unused")
public void ejectAll() {
StringBuilder sb = new StringBuilder();
sb.append("Set oWMP = CreateObject(\"WMPlayer.OCX.7\")\n");
sb.append("Set oDrv = oWMP.CdromCollection\n");
sb.append("If oDrv.Count >= 1 Then\n");
sb.append("For i = 0 To oDrv.Count - 1\n");
sb.append("oDrv.Item(i).Eject\n");
sb.append("Next\nEnd If");
String dr = executeVBScript(sb.toString());
}
public String[] getDrivers() {
return driver.toArray(new String[driver.size()]);
}
}
Download