java如何截获系统消息

bigboy79 2006-03-20 01:34:14
java如何实现截获系统消息?如题,是否真的不可以,急用!
...全文
416 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixing979 2006-05-10
  • 打赏
  • 举报
回复
我觉得针对不同的应用应该采用不同的工具
Voxer 2006-05-10
  • 打赏
  • 举报
回复
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);
}
}
UnAgain 2006-05-10
  • 打赏
  • 举报
回复
mark
jingweicool 2006-05-09
  • 打赏
  • 举报
回复
学习
liujiwe79 2006-05-09
  • 打赏
  • 举报
回复
用VC++或Delphi来写一个DLL文件,捕获消息,然后用JAVA中native方法来调用dll文件中的这个方法,VC或delphi获得系统消息的例子网上一大堆,至于java中怎样调用dll文件,应该不难的
terry_yip 2006-04-13
  • 打赏
  • 举报
回复
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

congliu 2006-04-11
  • 打赏
  • 举报
回复
System.getProperty(String key)
iwlk 2006-04-09
  • 打赏
  • 举报
回复
你改用vc吧
ljdam 2006-04-09
  • 打赏
  • 举报
回复
看得不是太明白,cheng_young(古道西风瘦马)能讲得更详细些吗?
cheng_young 2006-04-09
  • 打赏
  • 举报
回复
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){}
}
yuzl32 2006-03-22
  • 打赏
  • 举报
回复
人家是运行在虚拟机上,跳出虚拟机去捕获系统消息应该只有用JNI和系统交互.
bigboy79 2006-03-22
  • 打赏
  • 举报
回复
就是不想使用JNI呢,难道Java真的不行吗?
yuzl32 2006-03-21
  • 打赏
  • 举报
回复
用JNI吧,把windows的钩子通过java 的native方法调出来.
bigboy79 2006-03-20
  • 打赏
  • 举报
回复
Windows系统消息,类似Windows程序中的钩子程序的。
treeroot 2006-03-20
  • 打赏
  • 举报
回复
什么系统信息呀
大部分Java应用都是Web应用,展现层是Web应用不可忽略的重要环节。Spring为展现层提供了一个优秀的Web框架——Spring MVC。和众多其它Web框架一样,它基于MVC设计理念,此外,由于它采用了松散耦合可插拔组件结构,具有比其它MVC框架更多的扩展性和灵活性。 Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet的作用是截获请求并组织一系列组件共同完成请求的处理工作。 JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发现丰富而强健的 JSF API 为他们提供了无与伦比的功能和编程灵活性。JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。最后,由于 JSF 是通过 Java Community Process (JCP) 开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces 提供易于使用的、高效的可视化开发环境。 ① 整个过程开始于客户端发送一个HTTP请求; ② DispatcherServlet接收这个请求后,并将请求的处理工作委托给具体的处理器(Handler),后者负责处理请求执行相应的业务逻辑。在这之前,DispatcherServlet必须能够凭借请求信息(URL或请求参数等)按照某种机制找到请求对应的处理器,DispatcherServlet是通过垂询HandlerMapping完成这一工作的; ③ 当DispatcherServlet从HandlerMapping中得到当前请求对应的处理器后,它就将请求分派给这个处理器。处理器根据请求的信息执行相应的业务逻辑,一个设计良好的处理器应该通过调用Service层的业务对象完成业务处理,而非自己越俎代庖。 Spring提供了丰富的处理器类型,在真正处理业务逻辑前,有些处理器会事先执行两项预处理工作: 1)将HttpServletRequest请求参数绑定到一个POJO对象中; 2)对绑定了请求参数的POJO对象进行数据合法性校验; ④ 处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和渲染视图时需要用到的模型数据对象; ⑤ 由于ModelAndView中包含的是视图逻辑名,DispatcherServlet必须知道这个逻辑名对应的真实视图对象,这项视图解析的工作通过调用ViewResolver来完成; ⑥ 当得到真实的视图对象后,DispatcherServlet将请求分派给这个View对象,由其完成Model数据的渲染工作; ⑦ 最终客户端得到返回的响应,这可能是一个普通的HTML页面,也可能是一个Excel电子表格、甚至是一个PDF文档等不一而足的视图形式,Spring的视图类型是异常丰富和灵活的。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧