/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package dos; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class java仿dos截获方式 extends JFrame implements KeyListener, ActionListener { private JTextArea content; private JButton start, exit; private PrintWriter pw; private BufferedReader br; private Process p; /** Creates a new instance of Test */ public java仿dos截获方式() { initWindow(); } private void initWindow() { content = new JTextArea(); start = new JButton("开始"); exit = new JButton("退出"); content.setFont(new Font("宋体", Font.BOLD, 15)); JPanel center = new JPanel(new BorderLayout()); JPanel bottom = new JPanel(); center.add(new JScrollPane(content), BorderLayout.CENTER); bottom.add(start); bottom.add(exit); content.addKeyListener(this); start.addActionListener(this); exit.addActionListener(this); Container c = this.getContentPane(); c.add(center, BorderLayout.CENTER); c.add(bottom, BorderLayout.SOUTH); this.setSize(500, 500); this.setLocationRelativeTo(null); this.setVisible(true); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { if (p != null) { p.destroy(); } System.exit(0); } }); } public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { } public void keyReleased(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { String s = getInput(); pw.println(s + "\r"); pw.flush(); } } private String getInput() { String input = content.getText(); StringBuffer sb = new StringBuffer(input); sb.replace(sb.length() - 1, sb.length(), " "); int index = sb.lastIndexOf("\n"); String sub = input.substring(index); return sub; } public void actionPerformed(ActionEvent e) { if (e.getSource() == start) { start.setEnabled(false); initCMD(); } else if (e.getSource() == exit) { if (p != null) { p.destroy(); } System.exit(0); } } private void initCMD() { try { p = Runtime.getRuntime().exec("cmd.exe"); br = new BufferedReader(new InputStreamReader(p.getInputStream())); pw = new PrintWriter(new OutputStreamWriter(p.getOutputStream())); new Thread(new Runnable() { public void run() { try { String output = ""; while ((output = br.readLine()) != null) { content.append(output + "\n"); content.setCaretPosition(content.getText().length()); } System.exit(0); } catch (Exception exe) { exe.printStackTrace(); } } }).start(); } catch (Exception exe) { exe.printStackTrace(); } } public static void main(String[] args) throws Exception { new java仿dos截获方式(); } }