我想在HOOK中实现一个界面!

bahic 2005-12-21 01:05:01

我在HOOK.DLL中写了一个全局键盘HOOK,而且HOOK.DLL中有一个FORM的界面。我第一次在其它进程中
可以弹出来。在第二。三。。。以后的程序中就不能弹出界面!而且我跟踪DLL后发现。我的键盘HOOK子函数根本就再也不起作用了!

我的界面初始化是在:
SetHook()

Form1=new(TFORM); //初始化界面
......

我也知道。因为我的界面没有在共亨内存中生成。当在不同的程序中弹出时就会重新生成一份Form1。

我现在不知道怎么办了。。。。
我本来要实现的目的就是:在DLL中的界面可以在任何进程中都可以弹出来。(就象防毒软件一样)
请高人给我一个思路。或者实现的源代码。。。无限感激中。。。。
...全文
282 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bahic 2005-12-23
  • 打赏
  • 举报
回复
自己顶一下
bahic 2005-12-23
  • 打赏
  • 举报
回复
请问一下,金山游侠它就可以在别的进程中弹出来。即使是全屏游戏。
如果简单地发一个消息给主程序来弹出窗体,当在运行全屏游戏时那就会在下面出现任务栏,发消息这种方法我原来就做过了。觉得不好才来请教高手另给好主意!!!
mme 2005-12-23
  • 打赏
  • 举报
回复
在别的进程干这种活,根本就是自找麻烦,没有任何一个放毒软件会这样干的。

一般可以发送个消息给自己的进程,弹出窗体,完了之后,再通知hook里面的代码,继续运行。
wangk 2005-12-22
  • 打赏
  • 举报
回复
要出现在任务栏?
那么将对话框做成独立的程序,在钩子里CreateProcess得了。
或者
导出一个初始化函数,在初始化函数中生成唯一实例,共享数据段保存该实例。
bahic 2005-12-22
  • 打赏
  • 举报
回复
呵呵,这两种办法我都试过了。
第一种。我的程序界面并不是在其它程序的线程中弹出来的,要出现任务栏。不象那些防毒软件一样。
第二种情况:我用的FORM不能在共享内存中初始化生成界面。
bahic 2005-12-22
  • 打赏
  • 举报
回复
你说的“导出一个初始化函数,在初始化函数中生成唯一实例,共享数据段保存该实例。”
这种办法,能给我一个源代码,或者网上的实例吗?
我也在DLL中用了内存映射的。但不知道怎么样才能将界面放到里面进行初始化。
我在网上没找到。才在这里求教。

其实我想象防毒程序无论在什么程序的界面里都能弹出它的提示界面一样。
只不过我将界面放在DLL中,想让当按CTRL+J就弹出。
能给我这方面的资料或者代码吗。谢谢了
oyljerry 2005-12-21
  • 打赏
  • 举报
回复
共享数据段 data_seg
wangk 2005-12-21
  • 打赏
  • 举报
回复
用事件交互。两个事件A,B。
钩子函数中置A事件,等待B事件。

另外一个独立进程,等待A事件,弹出对话框,处理结束后置B事件。

钩子函数中得到B事件,继续执行。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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