能力值:
( LV11,RANK:180 )
2 楼
是么是后台模拟??
你可以先GetCursorPos保存当前位置
然后SetCursorPos然后SendMessage,再Sleep一会,再SetCursorPos把鼠标设置回原来的位置
能力值:
( LV2,RANK:10 )
3 楼
所谓后台就是在窗口最小化的时候一样的能实现.而不需要鼠标真实的移动到那个位置
能力值:
( LV3,RANK:20 )
4 楼
void Bot::LeftClick(WORD x, WORD y)
{
PostMessage(m_hWnd, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
Sleep(100);
PostMessage(m_hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
Sleep(50);
PostMessage(m_hWnd, WM_LBUTTONUP, 0, MAKELPARAM(x, y));
Sleep(100);
}
能力值:
( LV2,RANK:10 )
5 楼
SendMessage要等消息执行后才返回,容易导致软件卡死。
PostMessage不等执行就返回,不过消息石沉大海的可能性很大。
既然是模拟为什么不用key_event和mouse_event。
更方便的用按键精灵模拟去,这个比自己写个程序模拟省心多了。
能力值:
( LV3,RANK:20 )
6 楼
这种情况应该是麻将程序在接收到鼠标消息的时候对窗口有没有获取焦点,或者是鼠标有没有在窗口内进行了检测。
在Post鼠标消息之前,给游戏程序来些伪装的消息试试?
鄙人拙见,不知可行性怎样
能力值:
( LV2,RANK:10 )
7 楼
楼上正解!!
我就是在想怎么给游戏程序来些伪装消息!百思不得其解.
能力值:
( LV11,RANK:188 )
8 楼
都sendmessage了,何不就直接去call游戏的窗口proc /:^]!
用WM_MOUSEMOVE来欺骗窗口就好
能力值:
( LV2,RANK:10 )
9 楼
Public Sub SendKey(ByVal key As Keys, ByVal Diablo2Handle As IntPtr)
If Diablo2Handle = Nothing Then Exit Sub
PostMessage(Diablo2Handle, WM_KEYDOWN, key, 0)
PostMessage(Diablo2Handle, WM_KEYUP, key, 0)
End Sub 用postmessage
能力值:
( LV2,RANK:10 )
10 楼
::SendMessage(cildhwnd,WM_LBUTTONDOWN,0,lparam);//MK_LBUTTON
窗口对象应该是最大的那个,不应该是子窗口的吧.我一直都是用的最大的那个
能力值:
( LV2,RANK:10 )
11 楼
我通过SPY++观察游戏窗口,能收到WM_LBUTTONDOWN消息,但是却没有自动出牌,
能力值:
( LV2,RANK:10 )
12 楼
PostMessage有没有可能被hook了。
下面一段代码可以在windows xp下绕过用户层的hook
__declspec(naked) int WINAPI sysFastCall()
{
__asm
{
mov edx, esp
_emit 0x0f
_emit 0x34
}
} __declspec(naked) BOOL WINAPI MyPostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
__asm
{
mov eax, 0x11DB
call sysFastCall
retn 0x10
}
}
能力值:
( LV5,RANK:70 )
13 楼
你们想得太多了,4L正解。
能力值:
( LV2,RANK:10 )
14 楼
我在画图程序里面实验,利用::SendMessage(cildhwnd,WM_LBUTTONDOWN,0,lparam);
模拟鼠标按键消息,用 SPY++观察画图程序窗口能收到WM_LBUTTONDOWN消息,但是却没工作.
在sendmessage前面加上SetCursorPos(555,645),在画图程序窗口为激活时能正常工作,
有什么办法能让画图程序窗口在最小化的时候也能正常的接受消息和模拟鼠标按键呢.
能力值:
( LV2,RANK:10 )
15 楼
新手关注一下
能力值:
( LV2,RANK:10 )
16 楼
还有一个办法解决。 HOOK GetCursorPos 然后必要时候返回成你自己的POS
能力值:
( LV4,RANK:50 )
17 楼
有印象是使用mouse_event API来实现模拟鼠标事件的。
能力值:
( LV2,RANK:10 )
18 楼
注释掉这句好象可以不用,直接下面几句就OK,因为我使用后台的时候就后面几条就OK的,若不行的话是否坐标有误?或者游戏屏蔽了后台操作?
能力值:
( LV2,RANK:10 )
19 楼
最好是找到出牌方法自己调用。这种想在程序失去焦点时还能模拟那就不知道怎么弄的了。另,在程序有焦点时需要有次序的发送消息,一般为MOVE,DOWN,UP