这是一个通过Java 利用 EXE 来运作的一个小关机程序
目前第二种方法还不能 取消其关机 的进程(通过在 命令窗口 中输入at 可查看) 希望看到的 大侠们帮帮忙
public class DS{
//定义属性
private javax.swing.JLabel la_name;
private javax.swing.JLabel ka_name;
private javax.swing.JTextField jta_name;
private javax.swing.JLabel A_name;
private javax.swing.JTextField B_name;
private javax.swing.JLabel C_name;
private javax.swing.JLabel D_name;
private javax.swing.JLabel E_name;
private javax.swing.JLabel F_name;
private javax.swing.JLabel G_name;
private String s="00:00";
int e;
//程序入口
public static void main(String args[]){
DS tf=new DS();
tf.showFrame();
}
//显示一个界面的方法
public void showFrame(){
javax.swing.JFrame frame=new javax.swing.JFrame();
frame.setTitle(" 定时关机 ");
//加一个JPanel 对象 使界面更美观
// javax.swing.JPanel panel=new javax.swing.JPanel();
//panel.setSize(300,100);
//加上流式布局管理器对象
java.awt.FlowLayout fl=new java.awt.FlowLayout();
frame.setLayout(fl);
la_name=new javax.swing.JLabel(" 计划关闭计算机于: "); //创建一个标签
jta_name=new javax.swing.JTextField(4); //创建一个文本框
ka_name=new javax.swing.JLabel( " 分钟后! "); //创建一个标签
A_name=new javax.swing.JLabel("计划关闭计算机于:");
B_name=new javax.swing.JTextField(5);
C_name=new javax.swing.JLabel("某时某分");
D_name=new javax.swing.JLabel(" (注:慎用第二种关机方法,目前还不能取消其关机) ");
E_name=new javax.swing.JLabel(" *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* ");
F_name=new javax.swing.JLabel(" ");
G_name=new javax.swing.JLabel(" *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* ");
String l="30";
B_name.setText(s);
jta_name.setText(l);
//创建一个按钮
javax.swing.JButton yunxing=new javax.swing.JButton( " 运行 ");
//创建一个按钮监听器
yunxing.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){
processEvent1(); }});
jta_name.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){
processEvent1();}});
B_name.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){
processEvent1();}} );
//创建另一个按钮
javax.swing.JButton quxiao=new javax.swing.JButton( " 取消//取消关闭 ");
//创建一个按钮监听器
quxiao.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){
processEvent2();
}} );
//添加
//frame.add(panel);
frame.add(la_name);
frame.add(jta_name);
frame.add(ka_name);
frame.add(A_name);
frame.add(B_name);
frame.add(C_name);
frame.add(G_name);
frame.add(yunxing);
frame.add(F_name);
frame.add(quxiao);
frame.add(E_name);
frame.add(D_name);
frame.setSize(290,200); //窗体大小
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(3);
frame.setVisible(true); //窗体显示
}
//另一个窗体 用来提示用时间关机的方法已达成
public void frame1(){
javax.swing.JFrame frame2=new javax.swing.JFrame();
la_name=new javax.swing.JLabel(" 计 划 关 闭 计 算 机 已 成 功!!! ");
frame2.add(la_name);
frame2.setSize(220,100); //窗体大小
frame2.setResizable(false);
frame2.setLocationRelativeTo(null);
frame2.setVisible(true); //窗体显示
}
//关机的方法
private void processEvent1(){
String TIME2=B_name.getText();
if(TIME2.equals(s)==true){
e=1;
}
//第一种 用 分钟的关机
if ( e == 1 ){
String TIME= jta_name.getText();//得到输入
int i = Integer.parseInt(TIME);
int T=60*i;
String.valueOf(T);
String aa="cmd.exe /c start shutdown -s -t "+T;
Runtime AA=Runtime.getRuntime();
try{
AA.exec(aa);
//由于这种方法能够自己显示出来 所以不需要弹出一个提示框
} catch( Exception ex){
ex.printStackTrace();
}
}
//第二种 用时间的关机
else if( e !=1 ){
String bb="at "+TIME2+" shutdown -r " ;
Runtime AA=Runtime.getRuntime();
try{
AA.exec(bb);
//弹出一个提示框,显示已达成关闭命令
DS gf=new DS();
gf.frame1();
} catch( Exception ex){
ex.printStackTrace();
}
}
}
//取消关机的方法
private void processEvent2(){
if(e==1){
String dd= "cmd.exe /c start shutdown -a ";
Runtime AA=Runtime.getRuntime();
try{
AA.exec(dd);
System.out.println("- 取消 1 -" );
System.exit(0);
} catch( Exception ex){
ex.printStackTrace();
}
}
else if( e !=1 ){
String dd= "cmd.exe /c start shutdown -a ";
Runtime AA=Runtime.getRuntime();
try{
AA.exec(dd);
System.out.println("- 取消 2 -" );
System.exit(0);
} catch( Exception ex){
ex.printStackTrace();
}
}
}
}