首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

KillTimer失败GetLastError返回0,咋回事?

2012-05-04 
KillTimer失败GetLastError返回0,怎么回事??自己写的程序A其中设置定时器,在B程序中用KillTimer杀掉A中的

KillTimer失败GetLastError返回0,怎么回事??
自己写的程序A其中设置定时器,在B程序中用KillTimer杀掉A中的定时器,但返回值总是FALSE,GetLastError却是0,不知道什么原因,请大鸟帮小菜解惑!

[解决办法]
A与B都是什么?
是应用程序?如果是的话,杀A中的定时器,只能在A中杀,B给A发个消息,让A自己杀就可以了!

[解决办法]
Specifies the outcome of the function. The value is nonzero if the event was killed. It is 0 if the KillTimer member function could not find the specified timer event. 

[解决办法]
那只是KillTimer 返回失败。
是不是你传的句柄无效
[解决办法]
B程序中怎么杀? 

代码贴出来
[解决办法]
这个问题的好好研究和实验下。
[解决办法]
你的SetTimer怎么写的?
[解决办法]
FindWindow返回的是窗口指针CWin*;而KillTimer的第一个参数是一个窗口句柄HWND,不知道这两个可以是一样的么?
另外static CWnd* PASCAL FindWindow( LPCTSTR lpszClassName, LPCTSTR lpszWindowName );
第一个参数是窗口类名,第二个参数是窗口名称吗?
[解决办法]
呵呵不好意思没仔细看代码。
The FindWindow function retrieves the handle to the top-level window whose class name and window name match the specified strings. This function does not search child windows.
所以看看这两个窗口的关系吧,对这个问题我也好奇,故而看看,勿怪!
[解决办法]
跨进程的话,可以使用CreateWaitableTimer/SetWaitableTimer();可等待的定时器
[解决办法]
可以另起一个线程来处理定时器,不需要的时候撤销
[解决办法]
返回值总是FALSE,那timer被干掉了吗?
[解决办法]
学习。嗯。LZ头像很PL
[解决办法]
A,B都是你自己写的程序吗?确定FindWindow返回的窗口句柄与你SetTimer所在窗口是否同一窗口?跨进程KillTimer没试过,~—~
[解决办法]
就算跨进程KillTimer有用,但任务管理器程序肯定会对非自己进程发过来的消息进行检查的,你也不一定能干掉。
[解决办法]
MSDN也没说可以,你不能假定它没说的功能就一定有,而应该说没有说的功能就当作没有

探讨
引用:
A与B都是什么?
是应用程序?如果是的话,杀A中的定时器,只能在A中杀,B给A发个消息,让A自己杀就可以了!

MSDN也没说不让夸进程使用KillTimer呀!!!

[解决办法]
而且尽管KillTimer没说,SetTimer却说了:SetTimer必须在拥有hWnd的线程中调用,我不觉得KillTimer会合SetTimer有不同的约束
[解决办法]
我估计你只有注射代码到对方进程,然后再KillTimer了
探讨
那可以用其他的办法吗,更底层怎么实现呢?

[解决办法]
一般不能跨进程修改的东西就用远程线程注入吧
[解决办法]
那只是KillTimer 返回失败。
是不是你传的句柄无效 
 

热点排行