首页
社区
课程
招聘
[旧帖] 关于PostMessage和SendMessage函数的消息阻塞 0.00雪花
发表于: 2012-9-2 15:28 10336

[旧帖] 关于PostMessage和SendMessage函数的消息阻塞 0.00雪花

2012-9-2 15:28
10336
关于PostMessage和SendMessage函数的消息阻塞!通过CreateProcess启动了一个进程,
然后向该进程PostMessage或SendMessage发送了一个消息后,消息给阻塞了!
但是只要在该窗口进行点击就可以恢复了消息阻塞,请问如何通过代码实现这个而不进行阻塞!
我通过SetActiveWindows等都实现不了(环境单核和双核都会出现类似的情况)!
不知道各位有什么好的办法..至于使用keydb_event和mouse_event实现的话可能不怎么理想...........

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 185
活跃值: (70)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
除消息循环外再SetTimer来Get消息吧,,这样应该就行了
2012-9-5 16:53
0
雪    币: 788
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我是注入了别的程序然后发送消息进行一个激活的
2012-9-9 18:50
0
雪    币: 126
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
估计那个窗口在未获取输入焦点前不接收消息,试下下面的代码:
		//如果不需要前置,则先注释掉测试下面的
		::SetWindowPos(hwnd_for_recv, HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
		::SetWindowPos(hwnd_for_recv, HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
		::SetForegroundWindow(hwnd_for_recv);

		/*
		用附加本线程到最前面窗口的线程,从而欺骗windows。 这个可以
		*/
		DWORD pid = GetWindowThreadProcessId(::GetForegroundWindow(), NULL);
		AttachThreadInput(pid, dwThreadId_for_recv, TRUE); 
		::SetForegroundWindow(hwnd_for_recv);
		::SetFocus(hwnd_for_recv);
		::PostMessage(hwnd_for_recv,...);
		AttachThreadInput(pid, dwThreadId_for_recv, FALSE); 
2012-9-9 19:52
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
是要阻塞自己子进程的消息队列?
2012-9-11 00:09
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
看楼主的意思,诂计想给某个程序写按键,没想到程序反消息,不能从程序外发送事件进来吧。
2012-9-11 11:13
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
试试SetFocus()或SetForegroundWindow()
2012-9-11 11:16
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
API有个让窗口永远置前的函数,调用一下,然后再用setforegoundwindow(应该是这函数获得焦点)让窗口获得焦点,然后再调用让窗口置前的那个函数取消置前。
这个肯定行,我是手机上的网,楼主自己百度下 窗口 置前 的函数吧
2012-9-11 15:46
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
你在发送消息前,先向这个进程(窗体)发送个WM_ACTIVE消息试试。楼主说点击下就好使,感觉可能会有用,如果还不行把这个窗体设置用SetWindowPos设置到最前端再用这个消息试下,还不行估计程序对外部消息进行处理了。(估计是通过GetMessagePos获取消息时鼠标位置判断是否是控件触发的,GetMessageTime获取消息时间等方式,楼主可以试着在发消息前把这些都设置成"合法"的值再尝试一下)。如果还不行。。。等楼下大牛
2012-10-18 11:29
0
游客
登录 | 注册 方可回帖
返回
//