能力值:
( LV3,RANK:30 )
|
-
-
2 楼
除消息循环外再SetTimer来Get消息吧,,这样应该就行了
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我是注入了别的程序然后发送消息进行一个激活的
|
能力值:
( 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);
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
是要阻塞自己子进程的消息队列?
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
看楼主的意思,诂计想给某个程序写按键,没想到程序反消息,不能从程序外发送事件进来吧。
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
试试SetFocus()或SetForegroundWindow()
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
API有个让窗口永远置前的函数,调用一下,然后再用setforegoundwindow(应该是这函数获得焦点)让窗口获得焦点,然后再调用让窗口置前的那个函数取消置前。
这个肯定行,我是手机上的网,楼主自己百度下 窗口 置前 的函数吧
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
你在发送消息前,先向这个进程(窗体)发送个WM_ACTIVE消息试试。楼主说点击下就好使,感觉可能会有用,如果还不行把这个窗体设置用SetWindowPos设置到最前端再用这个消息试下,还不行估计程序对外部消息进行处理了。(估计是通过GetMessagePos获取消息时鼠标位置判断是否是控件触发的,GetMessageTime获取消息时间等方式,楼主可以试着在发消息前把这些都设置成"合法"的值再尝试一下)。如果还不行。。。等楼下大牛
|
|
|