Java调用批处理实现任务管理器
任务管理器完成图
5.1 具体代码如下:
1.客户端代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
class Frame
{
private JFrame f;
public static JTextArea ta;
JButton bt =new JButton();
Connect c;
public Frame()
{
init();
c=new Connect();
}
private void init()
{
f=new JFrame("窗口");
BorderLayout blayout=new BorderLayout();
f.setLayout(blayout);
f.setBounds(500,300,300,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//文本区滚动条
JScrollPane sp=new JScrollPane();
ta=new JTextArea();
sp.setViewportView(ta);
f.add(sp,BorderLayout.CENTER);
//容器里添加文本框和按钮
JPanel p=new JPanel();
bt.setText("report");
p.add(bt);
f.add(p,BorderLayout.SOUTH);
//添加监听器
ActionListener bal=new AListener();//请求
bt.addActionListener(bal);
//设置显示窗口
f.setVisible(true);
}
class AListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==bt)
{
Frame.ta.setText(" ");
c.line="rpt";
}
c.sendAcction();
}
}
}
class Connect
{
public String line;
public static String str;
static BufferedReader cin;
PrintWriter cout;
static BufferedReader cinr;
PrintWriter coutr;
public Connect()
{
try{
Socket server=new Socket("127.0.0.1",4700);//建立连接
cin =new BufferedReader(new InputStreamReader(server.getInputStream()));//输入流(服务器向客户端)
cout =new PrintWriter(server.getOutputStream());//输出流
}catch(Exception e){
System.out.println("Erro"+e);
}
}
void sendAcction()
{
try{
cout.println(line);
cout.flush();
while(true)
{
str=cin.readLine();
Frame.ta.append(str+'\n');
if(str.equals(" "))
{
break;
}
}
}catch(Exception e){
System.out.println("Erro"+e);
}
}
}
public class Client
{
public static void main(String args[])
{
Frame f=new Frame();
}
}
2.服务器代码
import java.net.*;
import java.io.*;
class Board extends Thread
{
private Socket socket;
public Board(Socket socket)
{
this.socket=socket;
}
public void run()
{
try{
String line;
String line1;
String b=new String("rpt");
BufferedReader sin =new BufferedReader(new InputStreamReader(socket.getInputStream()));//输入流,将socket输入数据封装到BufferReader里可以提高速率减少访问次数
PrintWriter sout =new PrintWriter(socket.getOutputStream());//输出流
while(true)
{
line=sin.readLine();
if(line.equals(b))
{
Process process = Runtime.getRuntime().exec("C:\\Users\\Administrator\\Desktop\\insave.bat"); //执行批处理文件
BufferedReader in=new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\file.txt"));
String str;
str=in.readLine();
while((str=in.readLine())!=null)
{
str=str+'\n';
sout.println(str);
sout.flush();
}
sout.println(" ");
sout.flush();
}
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
public class Server
{
public static void main(String args[])
{
ServerSocket server =null;
try{
server=new ServerSocket(4700);
}
catch(IOException e){
System.out.println("can't listen to:"+e);
}
Socket socket =null;
while(true)
{
try{
socket= server.accept();
}catch(IOException e){
System.out.println("Error:"+e);
}
new Board(socket).start();//创建线程
}
}
}
3.批处理代码
%1 start mshta vbscript:createobject("wscript.shell").run("""%~0"" ::",0)(window.close)&&exit
echo.
tasklist>file.txt
pause