日期:2014-05-20  浏览次数:20793 次

如何改变键盘的输入值
想实现这样一个功能:
当你敲键盘A时,实际上输入的是B。在网上查了查,说要用HOOK。
java能实现吗?
能给个例子不?

例如:程序运行后.
你在word中想输入   hello   word   时,只需要输入   H.
当然在其他程序中也一样.

------解决方案--------------------
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Xuliehao extends Applet implements ActionListener,KeyListener
{
Label lb=new Label( "请输入序列号:\n ");
TextField txt1=new TextField(5);
TextField txt2=new TextField(5);
TextField txt3=new TextField(5);
Button btn=new Button( "确定 ");
public void init()
{
add(lb);
add(txt1);
add(txt2);
add(txt3);
add(btn);
btn.addActionListener(this);
txt1.addKeyListener(this);
}
public void keyTyped(KeyEvent e){
System.out.println( "dasds ");
if(e.getSource()==txt1&&e.getKeyChar()== 'h '){
txt1.setText( "ello world ");
}

};
public void keyPressed(KeyEvent e){};
public void keyReleased(KeyEvent e){};
public void actionPerformed(ActionEvent e)
{
if(txt1.getText().equals( "cenji ")&&txt2.getText().equals( "ngaig ")&&txt3.getText().equals( "uoyou "))
JOptionPane.showMessageDialog(null, "欢迎使用**** ");
else
JOptionPane.showMessageDialog(null, "序列号错误 ");
}
}


//输入序列号那里写个 'h '

------解决方案--------------------
除非jni 否则不可能实现
------解决方案--------------------
up
------解决方案--------------------
得到‘A’的int型数值加1后再转为CHAR型。不可以么?

没试过滴!
------解决方案--------------------
你在word中想输入 hello word 时,只需要输入 H.
当然在其他程序中也一样.//那岂不是要监视所有运行的程序?
------解决方案--------------------
木马
------解决方案--------------------
除非用JNI,JAVA是做不到这样的底层的。
------解决方案--------------------
把键盘拆了, 重新设计下里面的电路

然后装上键, 按A就变成B了...
------解决方案--------------------
lz学c++吧
------解决方案--------------------
用java看来是不行了,用C++写个输入法吧.呵呵.
------解决方案--------------------
用hook吧