如何用JAVA监听键盘输入啊。并写入到TXT文件。 如题。。 就是比如键盘输入ABCD。 就可以监听到。并写到TXT文件。后面我会。前面如何?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用KeyListener或KeyAdapter吧,具体用法google一下就知道了。 import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import javax.swing.JFrame;import javax.swing.JOptionPane;public class KeyBoardListener extends JFrame { private BufferedWriter bw; public KeyBoardListener() throws FileNotFoundException { bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\data.txt"))); this.setTitle("监听键盘事件"); this.setSize(800, 600); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { char ch = e.getKeyChar(); try { bw.write(String.valueOf(ch)); bw.flush(); } catch (IOException e1) { JOptionPane.showMessageDialog(null, "出错了"); } } }); } public static void main(String[] args) throws FileNotFoundException { new KeyBoardListener(); }} 楼上的 。 这个是可以。但是非要在jframe取得焦点的时候输入键盘才可以啊。比如我要这个程序跑起来。然后我点邮件 输入用户名。这就捕捉不到了啊。应该怎么处理 java估计无法实现了容易被杀毒软件干掉 监听的话,是要用到swing中的event。 意思是监视整个键盘输入,并不是一个含JFrame界面呀 学习C++, MFC,然后学习hook技术,你就可以达到你的目的了。 一般都会用JNI咯..这个比较复杂...楼主可以好好研究..然后直接调用winApi就行了 import java.awt.event.*;import java.util.*;import javax.swing.*;import java.awt.*;public class Example { public static void main(final String[] args) { Toolkit kit = Toolkit.getDefaultToolkit(); kit.addAWTEventListener(new KeyLogger(),AWTEvent.KEY_EVENT_MASK); java.awt.EventQueue.invokeLater(new Runnable(){ public void run(){ JFrame frame = new JFrame("Frame"); frame.add(new JScrollPane(new JTextArea())); frame.setPreferredSize(new java.awt.Dimension(500,300)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } private static class KeyLogger implements AWTEventListener{ @Override public void eventDispatched(AWTEvent e){ if(e instanceof KeyEvent){ KeyEvent event = (KeyEvent)e; if(event.getID() == KeyEvent.KEY_PRESSED){ System.out.print("`" + event.getKeyCode()); //System.out.print(event.getKeyChar()); } } } }} 就是打个比方。这个比较麻烦,我觉得要用勾子。delphi什么倒是实现起来简单些。java因为虚拟机的关系,可能要复杂一点。 文件分发问题 java程序问题,请高手帮忙看下。。。 讨论,生成一组由小写字母组成的字符串,形如a,b,c……z,aa,ab,ac,ad……a 我想用ActionMessages输出多条信息,但是总有问题,请高手指点!!!! 求助!java解压.z文件 帮帮忙吧,分要多少给多少,只要一些提示而已啊! 实现接口时出错,分数大大的有 jdk1.3 Error: /usr/bin/cut:no sub file or diretory. why? applet 与 sqlserver数据库 JAVA菜鸟求解惑 Java 名称空间的问题? socket 怎样向服务器端发送长String
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class KeyBoardListener extends JFrame {
private BufferedWriter bw;
public KeyBoardListener() throws FileNotFoundException {
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\data.txt")));
this.setTitle("监听键盘事件");
this.setSize(800, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.addKeyListener(new KeyAdapter() { @Override
public void keyReleased(KeyEvent e) {
char ch = e.getKeyChar();
try {
bw.write(String.valueOf(ch));
bw.flush();
} catch (IOException e1) {
JOptionPane.showMessageDialog(null, "出错了");
}
}
});
}
public static void main(String[] args) throws FileNotFoundException {
new KeyBoardListener();
}
}
但是非要在jframe取得焦点的时候输入键盘才可以啊。比如我要这个程序跑起来。然后我点邮件 输入用户名。这就捕捉不到了啊。应该怎么处理
java估计无法实现了
容易被杀毒软件干掉
然后直接调用winApi就行了
import java.util.*;
import javax.swing.*;
import java.awt.*;public class Example { public static void main(final String[] args) {
Toolkit kit = Toolkit.getDefaultToolkit();
kit.addAWTEventListener(new KeyLogger(),AWTEvent.KEY_EVENT_MASK);
java.awt.EventQueue.invokeLater(new Runnable(){
public void run(){
JFrame frame = new JFrame("Frame");
frame.add(new JScrollPane(new JTextArea()));
frame.setPreferredSize(new java.awt.Dimension(500,300));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
} private static class KeyLogger implements AWTEventListener{
@Override public void eventDispatched(AWTEvent e){
if(e instanceof KeyEvent){
KeyEvent event = (KeyEvent)e;
if(event.getID() == KeyEvent.KEY_PRESSED){
System.out.print("`" + event.getKeyCode());
//System.out.print(event.getKeyChar());
}
}
}
}
}
就是打个比方。
这个比较麻烦,我觉得要用勾子。
delphi什么倒是实现起来简单些。java因为虚拟机的关系,可能要复杂一点。