java如何截获系统消息 java如何实现截获系统消息?如题,是否真的不可以,急用! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Windows系统消息,类似Windows程序中的钩子程序的。 用JNI吧,把windows的钩子通过java 的native方法调出来. 就是不想使用JNI呢,难道Java真的不行吗? 人家是运行在虚拟机上,跳出虚拟机去捕获系统消息应该只有用JNI和系统交互. windows中有消息队列,相应的AWT中有事件队列EventQueue如下的辅助事件循环只捕获鼠标点击消息EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();while(true){ try { AWTEvent e = eq.getNextEvent(); if (e.getID()==MouseEvent.MOUSE_PRESSED) { MouseEvent mev = (MouseEvent)e; Point pt = mev.getPoint(); ... break; } }catche(Exception e){}} 看得不是太明白,cheng_young(古道西风瘦马)能讲得更详细些吗? hook这个概念只存在于windows上面,只有hook才能捕获windows的系统消息,因为java不是专门针对某个操作系统而设计的,所以java2的类库中没这个功能,要实现的话,你用VC++或Delphi来写一个DLL文件,写一个方法捕获消息,然后用JAVA中新增一个native方法来调用dll文件中的这个方法,VC或delphi获得系统消息的例子网上一大堆,至于java中怎样调用dll文件,请看:http://www.360doc.com/showWeb/0/0/30719.aspx 用VC++或Delphi来写一个DLL文件,捕获消息,然后用JAVA中native方法来调用dll文件中的这个方法,VC或delphi获得系统消息的例子网上一大堆,至于java中怎样调用dll文件,应该不难的 Java是可以捕获事件的,前提是你的程序和被捕获的程序是在一个JVM内。一般用于GUI的自动测试。有二种方式:1。自定义一个事件队列替代系统的事件队列import java.awt.EventQueue;import java.awt.*;import java.util.*;public class MyQueueEvent extends EventQueue {//自定义EventQueue的子类 public MyQueueEvent() { } public static void main(String[] args) { SimpleExample.main(new String[]{null}) ; MyQueueEvent myQueueEvent1 = new MyQueueEvent(); Toolkit.getDefaultToolkit().getSystemEventQueue().push(myQueueEvent1) ;//替代 }//在这里重载事件分发的方法 public void dispatchEvent(AWTEvent ae){ if(ae.getSource() instanceof javax.swing.JButton) System.out.println("My apture:"+((javax.swing.JButton)ae.getSource()).getText()) ; super.dispatchEvent(ae); }2。自定义一个事件监听类,加到系统监听中public class MyEvtListener implements AWTEventListener { // 把自己定义的事件处理加到系统监听 //这里只监听鼠标和键盘 private MyEvtListener() { Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.MOUSE_EVENT_MASK | AWTEvent.KEY_EVENT_MASK); } // 定义自己的事件处理 public void eventDispatched(final AWTEvent eve) { myprocessEvent(eve); }} java 一个类的不同方法注册同一个事件问题。 关于反射 高手进来看一下,URLConnection问题 JAVA GUI基础题目:怎么样才能是点击【帮助】里的【退出帮助】在弹出的窗口时,为要关闭这一个窗口,而不关闭菜单窗口和登陆界面的窗口?该怎么办啊 其他的不好的地方望帮我改正啊 请高手帮我看一下,能不能帮我把这段代码改成JAVA,谢谢! 求助:java自动拼写检查 问两个语句是什么意思 JSP处理繁体字出乱码. 例如 珺 璂 如何用java将网页上的图片下载到本地目录下 卡壳了,不知道怎么回事:( 数据库连接问题。大家帮帮忙 急求joc.jar的混淆器,有的请帮忙,收到即给分
如下的辅助事件循环只捕获鼠标点击消息EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
while(true)
{
try
{
AWTEvent e = eq.getNextEvent();
if (e.getID()==MouseEvent.MOUSE_PRESSED)
{
MouseEvent mev = (MouseEvent)e;
Point pt = mev.getPoint();
...
break;
}
}catche(Exception e){}
}
http://www.360doc.com/showWeb/0/0/30719.aspx
一般用于GUI的自动测试。
有二种方式:
1。自定义一个事件队列替代系统的事件队列
import java.awt.EventQueue;
import java.awt.*;
import java.util.*;
public class MyQueueEvent extends EventQueue {//自定义EventQueue的子类
public MyQueueEvent() {
}
public static void main(String[] args) {
SimpleExample.main(new String[]{null}) ;
MyQueueEvent myQueueEvent1 = new MyQueueEvent();
Toolkit.getDefaultToolkit().getSystemEventQueue().push(myQueueEvent1) ;//替代
}
//在这里重载事件分发的方法
public void dispatchEvent(AWTEvent ae){
if(ae.getSource() instanceof javax.swing.JButton)
System.out.println("My apture:"+((javax.swing.JButton)ae.getSource()).getText()) ;
super.dispatchEvent(ae);
}2。自定义一个事件监听类,加到系统监听中
public class MyEvtListener implements AWTEventListener {
// 把自己定义的事件处理加到系统监听
//这里只监听鼠标和键盘
private MyEvtListener() {
Toolkit.getDefaultToolkit().addAWTEventListener(this,
AWTEvent.MOUSE_EVENT_MASK | AWTEvent.KEY_EVENT_MASK);
} // 定义自己的事件处理
public void eventDispatched(final AWTEvent eve) {
myprocessEvent(eve);
}
}