- 论坛徽章:
- 0
|
背景:hook客户端程序clientApp,hook程序为一个对话框程序
目的:在clientApp的唯一eidt控件输入交易码的时候,hook程序弹出该交易的help信息(对话框隐藏并嵌入浏览器控件,Navigate来显示帮助信息)
还有:对话框启动的时候隐藏在托盘,在defWindowProc实现
现:hook写的是一个键盘钩子dll,对话框程序是调起程序,clientApp是个全屏的
hook捕获到clientApp输入交易码后,调用Navigate后,通过SendMessage发WM_PAINT消息,在OnPaint调用ShowWindow()和UpdateWindow();
问题:
程序执行的时候,如果第一次输入交易码,能弹出对话框,显示帮助信息,
但是再次输入交易码后,没弹出对话框,点任务栏显示对话框确实也根据交易码获取了帮助信息,但没弹到前面来
已做:
一开始是捕获交易码后发WM_NCPAINT,然后在defWindowProc中ShowWindow(),试了SetActiveWindow(),SetForegroundWindow(),只在任务栏变亮,但
是未在clientApp界面上显示(第一次都是成功的,就是第二次不成功显示),点击任务栏显示正确。然后查了资料,说WM_NCPAINT是重绘非客户区,然后我换WM_PAINT,并在OnPaint()
中显示,还是一样的,第一次能弹,第二次不行!!!!
请高手解惑(PS: 第一次用MFC做这个,对话框底层调用流程不是很理解)
(SetWindowPos Top不行,用户操作的时候,当输交易码的时候,帮助信息对话框应该被覆盖了,输完交易码回车的时候弹出)
|
|