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()]); } }