자바

윈도우 유틸 프로그램 Ver1.1

지안다안 2017. 8. 10. 11:34

* 시스템 종료(재시작) 취소 기능 추가

 

WinManager.java

 


public class WinManager
{
    private int orderCode;
    private BufferedReader br = null;
   
    public WinManager()
    {
        this.orderCode = 0;
       
        initApp();
    }
   
    void initApp()
    {       
        while(true)
        {
            System.out.println("1. 시스템 종료");
            System.out.println("2. 시스템 재시작");
            System.out.println("3. 시스템 종료(재시작) 취소");
            System.out.println("4. 프로그램 종료");
           
            System.out.print("메뉴번호를 입력해 주세요 : "); 
           
            try
            {       
                orderCode = System.in.read();               
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
           
            switch(orderCode)
            {
                case 49:
                            UtilClass.clearBuffer(System.in);
                            powerOffWindows();
                            break;
                case 50:
                            UtilClass.clearBuffer(System.in);
                            restartWindows();
                            break;                   
                case 51:         
                            UtilClass.clearBuffer(System.in);
                            operationCancel();
                            break;
                case 52:         
                            System.exit(0);
                default:
                            System.out.println("유효한 메뉴번호가 아닙니다");               
                            UtilClass.clearBuffer(System.in);                           
                            orderCode = 0;
            }
        }       
       
       
    }
   
    void powerOffWindows()
    {
        int delayTime = 0;       
     
        System.out.print("종료 대기시간을 숫자(초단위)로 입력해주세요. : ");
        delayTime = checkDelayTimeDigit();       

        String[] cmd = new String[2];       
        cmd[0] = "cmd.exe ";
        cmd[1] = "/c shutdown /s /t " + delayTime; 
       
        startWindowProcess(cmd);
    }   
   
    void restartWindows()
    {
        int delayTime = 0;       
       
        System.out.print("재시작 대기시간을 숫자(초단위)로 입력해주세요. : ");
        delayTime = checkDelayTimeDigit();       
       
        String[] cmd = new String[2];       
        cmd[0] = "cmd.exe ";
        cmd[1] = "/c shutdown /r /t " + delayTime; 
       
        startWindowProcess(cmd);
    }
   
    void operationCancel()
    {
        String[] cmd = new String[2];       
        cmd[0] = "cmd.exe ";
        cmd[1] = "/c shutdown /a";
       
        startWindowProcess(cmd);
    }
   
    void startWindowProcess(String[] cmd)
    {
        Runtime rt = Runtime.getRuntime();
        Process process;
       
        try
        {
            process = rt.exec(cmd);
            process.waitFor();
        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }
        catch (InterruptedException ex)
        {
            ex.printStackTrace();
        }               
    }
   
    int checkDelayTimeDigit()
    {          
        String userInputString = null; 
        boolean checkValue = false;
       
        do
        {
            br = new BufferedReader(new InputStreamReader(System.in));           
           
            try
            {
                userInputString = br.readLine();
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
           
            checkValue = UtilClass.checkDigit(userInputString);
           
        }while(checkValue!= true);               

        return Integer.valueOf(userInputString);
    }
   
    public static void main(String[] args)
    {
        WinManager winManger = new WinManager();
    }   
}