2014-07-01 2 views
1

Windows 서비스를 중지하고 시작하는 매우 간단한 응용 프로그램을 만드는 중입니다. GUI 인터페이스를 가지고 있기 때문에 JAVA를 선택해야합니다. 좀 더 간단한 언어를 알고 있다면 알려주세요. 내가 인쇄 스풀러를 멈추고 시작하기를 원한다는 샘플로. NetBeans를 사용하여 GUI 인터페이스를 만들었지 만 코딩 부분에 대한 도움이 필요합니다. 도와주세요. 감사!버튼으로 Windows 서비스 시작/중지

package MyServiceToolPKG; 
public class MyServiceToolGUI extends javax.swing.JFrame { 

/** 
* Creates new form MyServiceToolGUI 
*/ 
public MyServiceToolGUI() { 
    initComponents(); 
} 

/** 
* This method is called from within the constructor to initialize the form. 
* WARNING: Do NOT modify this code. The content of this method is always 
* regenerated by the Form Editor. 
*/ 
@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
private void initComponents() { 

    StartButton = new javax.swing.JButton(); 
    StopButton = new javax.swing.JButton(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    StartButton.setText("Start"); 
    StartButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      StartButtonActionPerformed(evt); 
     } 
    }); 

    StopButton.setText("Stop"); 
    StopButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      StopButtonActionPerformed(evt); 
     } 
    }); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(19, 19, 19) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addComponent(StopButton) 
       .addComponent(StartButton)) 
      .addContainerGap(26, Short.MAX_VALUE)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(StartButton) 
      .addGap(18, 18, 18) 
      .addComponent(StopButton) 
      .addContainerGap(22, Short.MAX_VALUE)) 
    ); 

    pack(); 
}// </editor-fold>       

private void StartButtonActionPerformed(java.awt.event.ActionEvent evt) {            
    // TODO add your handling code here: 
}           

private void StopButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
}           

/** 
* @param args the command line arguments 
*/ 
public static void main(String args[]) { 
    /* Set the Nimbus look and feel */ 
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
    * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
    */ 
    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(MyServiceToolGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(MyServiceToolGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(MyServiceToolGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(MyServiceToolGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 
    //</editor-fold> 

    /* Create and display the form */ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new MyServiceToolGUI().setVisible(true); 
     } 
    }); 
} 

// Variables declaration - do not modify      
private javax.swing.JButton StartButton; 
private javax.swing.JButton StopButton; 
// End of variables declaration     

}

업데이트 코드 :

private void StartButtonActionPerformed(java.awt.event.ActionEvent evt) {            
    // TODO add your handling code here: 
    StartSpooler(); 
}           

private void StopButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    StopSpooler(); 
} 
private void StopSpooler() { 
    String[] args = {"stop"}; 
    String[] command = {"cmd.exe", "/c", "sc", args[0], "spooler"}; 
    try { 
     Process process = new ProcessBuilder(command).start(); 
     InputStream inputStream = process.getInputStream(); 
     InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
     BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
     System.out.println(line); 
     } 
    } catch(Exception ex) { 
     System.out.println("Exception : "+ex); 
    } 
} 

private void StartSpooler() { 
    String[] args = {"start"}; 
    String[] command = {"cmd.exe", "/c", "sc", args[0], "spooler"}; 
    try { 
     Process process = new ProcessBuilder(command).start(); 
     InputStream inputStream = process.getInputStream(); 
     InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
     BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
     System.out.println(line); 
     } 
    } catch(Exception ex) { 
     System.out.println("Exception : "+ex); 
    } 
} 

감사합니다 여러분! 윈도우 명령 행에서 항아리 응용 프로그램

@echo off 
java.exe -jar C:\test\MyServiceTool.jar 
pause 
+2

를' "...하지만 코딩 부분에 도움이 필요합니다. "- 정말 질문이 아닙니다. 답변 ** ** 특정 ** 질문을하십시오. –

+1

Windows 서비스를 중지하고 시작하려면 어떻게합니까? – TMXStyles

답변

0

호출

private void StopSpooler() { 
    String[] args = {"stop"}; 
    String[] command = {"cmd.exe", "/c", "sc", args[0], "spooler"}; 
    try { 
     Process process = new ProcessBuilder(command).start(); 
     InputStream inputStream = process.getInputStream(); 
     InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
     BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
     System.out.println(line); 
     } 
    } catch(Exception ex) { 
     System.out.println("Exception : "+ex); 
    } 
} 

private void StartSpooler() { 
    String[] args = {"start"}; 
    String[] command = {"cmd.exe", "/c", "sc", args[0], "spooler"}; 
    try { 
     Process process = new ProcessBuilder(command).start(); 
     InputStream inputStream = process.getInputStream(); 
     InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
     BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
     System.out.println(line); 
     } 
    } catch(Exception ex) { 
     System.out.println("Exception : "+ex); 
    } 
} 

그리고 내가 관리자로 실행하는 배치 파일을 만들어 :

내 코드입니다 에는 관리자 권한이해야 할 그래서.

net start Spooler 

자바에서는 당신이 가진 도스 명령을 실행할 수 있습니다 :

net stop Spooler 

는 Windows 서비스 시작하려면 : 는 Windows 서비스 중지하려면

try { 
     Runtime.getRuntime().exec("net stop spooler"); 
    } catch (IOException ex) { 
     JOptionPane.showMessageDialog(null, ex.getMessage()); 
    } 
+0

'ProcessBuilder'가 더 나은 해결책이 될 것입니다. – MadProgrammer

+0

좋아, ProcessBuilder를 사용했지만 액세스가 거부되었습니다. 어떤 제안? – TMXStyles

+0

실행 : [SC] OpenService FAILED 5 : 액세스가 거부되었습니다. [SC] StartService : OpenService FAILED 5 : 액세스가 거부되었습니다. – TMXStyles