本人要对一个客户端游戏做一个自动登录的功能,现在尝试通过发送窗体WM_KEYUP WM_KEYDOWM 或 WM_CHAR 消息来实现。游戏窗口界面如下图1用SPY++查找游戏窗口结构如下图2通过SPY++可以确定游戏登录窗口为句柄 0x000A04A0 类名 SunAwtCanvas
然后我用SPY++监视我手动登录过程窗口 0X000A04A0 的 WM_KEYUP WM_KEYDOWM WM_CHAR 消息却监视不到这几个消息的任何记录
重新设置监视父窗口 0x000B03C2 下所有子窗口的 WM_KEYUP WM_KEYDOM WM_CHAR 消息, 这个时候能正确记录和反应我手动登录过程键盘操作记录 如下图3通过查看上图消息记录的窗体句柄却是 0x00030448 也就是上面图2的那个类名是 Static 的窗体
根据上面的消息记录我用程序向 0x00030448 发送WM_KEYDOWN WM_KEYUP 消息 SPY++记录和上面比对正常 但窗体却没有显示我发送的消息内容。消息记录如下图4不知道这个是什么原因? 请有了解的提供点意见或建议!
还有我尝试直接向窗体 0x000A04A0 发送消息后窗体也没有反应, 用SPY++监视消息发送也是成功的。
然后我用SPY++监视我手动登录过程窗口 0X000A04A0 的 WM_KEYUP WM_KEYDOWM WM_CHAR 消息却监视不到这几个消息的任何记录
重新设置监视父窗口 0x000B03C2 下所有子窗口的 WM_KEYUP WM_KEYDOM WM_CHAR 消息, 这个时候能正确记录和反应我手动登录过程键盘操作记录 如下图3通过查看上图消息记录的窗体句柄却是 0x00030448 也就是上面图2的那个类名是 Static 的窗体
根据上面的消息记录我用程序向 0x00030448 发送WM_KEYDOWN WM_KEYUP 消息 SPY++记录和上面比对正常 但窗体却没有显示我发送的消息内容。消息记录如下图4不知道这个是什么原因? 请有了解的提供点意见或建议!
还有我尝试直接向窗体 0x000A04A0 发送消息后窗体也没有反应, 用SPY++监视消息发送也是成功的。
LRESULT SendMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);即可。
句柄你可以通过APIHWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
返回登录窗体的句柄,
由于一张图都没看到,所以也不知道说的是不是符合你的意思。
不同的是这个值需要你打开登录界面的时候从保存的文件里面读取得到。你不会是想不打开登录界面就直接登录进去了吧