QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1230|回复: 4

请问如何捕捉应用窗口的关闭信号并处理

[复制链接]
发表于 2005-11-18 15:05:13 | 显示全部楼层 |阅读模式
在Windows下有钩子来捕捉用户的动作并进行处理
在Linux下呢
我只知道如何对自己编写的程序的信号处理
现在我想编一个程序
它能够监视当前用户的动作
当用户关闭一个窗口时
它能捕捉到这个动作
识别出关闭的是什么应用并进行相应处理
请问这种机制如何实现?
或者有什么类似的可以参考?
谢谢大家了!
发表于 2005-11-18 17:16:01 | 显示全部楼层
gtk窗口可以通过delete_event来实现。
从Xlib层做的话会麻烦点。qvwm的源码里有:
[code:1]
Atom _XA_WM_DELETE_WINDOW;
_XA_WM_DELETE_WINDOW = XInternAtom(display, "WM_DELETE_WINDOW", False);
void CloseWindow() { SendMessage(_XA_WM_DELETE_WINDOW); }
[/code:1]

可见窗口管理器实际上是给窗口发送一个"delete"消息,具体的自己去琢磨吧。
回复

使用道具 举报

发表于 2005-11-19 17:38:14 | 显示全部楼层
delete_event 只能从当前程序相应来地当前程序窗口的消息吧……
回复

使用道具 举报

 楼主| 发表于 2005-11-21 10:32:59 | 显示全部楼层
我还是有以下疑问:
我现在只能捕获本程序的delete_event以关闭窗口
如何捕获别的程序的?
mozilla所提查看WM源码
好像WM相关源码只是关闭这个窗口
但如何能知道是哪个应用的窗口加以不同的处理
这恐怕就不是WM所能做的事了
不知我想的对不对?
还有当前有没有这方面的项目
Windows因为有一个API所以这样的后台监视程序很多
Linux下难道就没有吗
总觉得不能啊?!
回复

使用道具 举报

发表于 2005-11-21 12:10:04 | 显示全部楼层
WM是不会理会这个窗口是属于哪个程序的,因为它拥有的只是这个窗口的句柄,它只管发消息,至于如何处理这个消息是应用程序自己或者X window干的事。

所有窗口事件都要经过X window,但X window是否提供相应的接口就不清楚了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-3 04:17 , Processed in 0.094531 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表