王兆民蒋介石:如何使另一个程序(VB5)的定时器停止计时

来源:百度文库 编辑:高考问答 时间:2024/04/29 03:48:39
有一个VB5的程序,通过分析看到有一个tunderRT5imer 控件在控制程序的运行。如何通过API或是钩子来停止这个计时器呢?

我试过setwindowlong(计时器.whnd, GWL_WNDPROC, addressof my_timer),但是不行,因为getwindowlong(计时器.whnd,WNDPROC)返回的是0。 好像getwindowlong 和setwindowlong不能跨进程。

我没试过钩子,因为不知道怎么钩到这个计时器的WM_TIMER消息
这个VB5程序是一个第三方的程序,不是我自己遍的,我自己编的,还用那么复杂吗?

谢谢wssccc的回答,不过,你的回答应该不是我要的答案。因为,首先,这个计时器不是由setimer函数生成,其次,如果用killtimer来删除它,请问nIDEVENT的参数是什么?

谢谢xxnyygn的回答。你说的有道路。不过用SOFT-ICE跟踪VB5的程序,比较麻烦,一直在VB5的运行库里面转悠,出不来。

在网上找了很久,从来没有人提出过类似问题,也没有相关的经验介绍,看来只有自己摸索了。 我提出问题的初衷是要搞一个通用的能自如启停第三方程序的计算器的程序。

这个函数 KillTimer
声明
Public Declare Function KillTimer Lib "user32" Alias "KillTimer" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

KillTimer(窗口句柄) 就行了

你是用SMARTCHECK分析的吧,那你试一试SOFT-ICE,用它来跟踪程序,分析程序的消息和一些句柄,我个人觉得停止运行中的TIMER不太现实,特别是从外部停止,你没有相应的权利,也没有正当接口,所以建议修改程序本身,寻找他的TIMER的ENABLED变化的汇编码,改过来就可以,你可以到黑客基地看一看,了解一些知识.