各位帮看看这个代码错在哪里_QQ游戏自动登陆器 V1.0 实现原理

foxzhouxp 2016-08-23 05:11:08
各位,我在网上找的这个代码,按照说明做,为什么会出错啊,
主要是三个全局变量出错,和回调函数出错。

怎么改才正确啊,能不能把代码中用到的三个全局变量写到对话框图类中作为成员变量呢,那个回调函数能不能作为对话框图类的成员函数呀,好似我修改了也是出错的,不知怎么啦,谢谢各位!!!!!

网上代码:

QQ游戏自动登陆器 V1.0 实现原理
程序截图:


实现思路,利用FindWindow 需找 QQ游戏 窗口获得其窗口句柄 (无论是哪个版本的QQ游戏 窗口标题名都是 QQ游戏)利用这个句柄,使用EnumChildWindows 函数 遍历其文本框。向其写入,第一个文本框一定是账号,然后向其发送一个 SendMessage(hWnd,WM_SETTEXT,MAX_PATH,(long)QQUser); 写入数据的消息,
再判断控件 if (lStyle & ES_PASSWORD) 是否为密码属性 是则发送::SendMessage(hWnd,WM_SETTEXT,MAX_PATH,(long)Password); 密码。 密码框输入完毕后 发送一个回车消息使其登录。PostMessage(hWnd,WM_KEYDOWN,VK_RETURN ,0);

具体实现源码:

先设置几个全局变量:

char QQUser[11] = {0}; // QQ 账号
char QQPassword[]="L、"; // QQ 密码 偷一下懒 全部统一密码

int Test = 0; // 如果已经对两个对话框写入数据则回车登陆

// 这个是【账号 1】按钮触发的函数
void CQQDlg::OnGame1()

{
GetDlgItem(IDC_Game1)->EnableWindow(0); // 设置按钮为禁用 只是为了美观一点
strcpy(QQUser,"1262563257");
HWND hWnd = ::FindWindow(NULL,"QQ游戏"); // 寻找窗口句柄
::EnumChildWindows(hWnd,(WNDENUMPROC)EnumFunc,NULL); // 遍历控件
Test = 0;
CloseHandle(hWnd);
GetDlgItem(IDC_Game1)->EnableWindow(1); // 设置按钮为可用 只是为了美观一点
}
// EnumChildWindows 回调函数
BOOL CALLBACK EnumFunc(HWND hWnd,LPARAM lParam)
{
if (Test > 2) // 当Test 大于 2 时 说明数据已经写入 结束循环
{
return 0;
}
LONG lStyle = ::GetWindowLong(hWnd,GWL_STYLE); // 获取文本控件属性
if (lStyle & ES_PASSWORD) // 向密码框输入密码
::SendMessage(hWnd,WM_SETTEXT,MAX_PATH,(long)Password);
Test ++ ;
if ( Test == 1 ) // 第一个编辑框 肯定是账号
::SendMessage(hWnd,WM_SETTEXT,MAX_PATH,(long)QQUser);
if ( Test == 2 )//按回车键
::PostMessage(hWnd,WM_KEYDOWN,VK_RETURN ,0);
return 1;
}

我输入以上代码后,编译时候出错了,出以下提示信息

--------------------Configuration: qqgame - Win32 Debug--------------------
Compiling...
qqgameDlg.cpp
E:\2016VC\qqgame\qqgameDlg.cpp(178) : error C2065: 'QQUser' : undeclared identifier
E:\2016VC\qqgame\qqgameDlg.cpp(180) : error C2065: 'EnumFunc' : undeclared identifier
E:\2016VC\qqgame\qqgameDlg.cpp(181) : error C2065: 'Test' : undeclared identifier
E:\2016VC\qqgame\qqgameDlg.cpp(188) : error C2373: 'EnumFunc' : redefinition; different type modifiers
E:\2016VC\qqgame\qqgameDlg.cpp(195) : error C2065: 'QQPassword' : undeclared identifier
Error executing cl.exe.

qqgame.exe - 5 error(s), 0 warning(s)
...全文
670 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cutmelon 2016-09-07
  • 打赏
  • 举报
回复
你这是声明、定义分不清啊 全局变量的写法
//a.h   声明全局变量
extern char QQUser[11];

//a.cpp	定义全局变量
#include "a.h"
char QQUser[11];	//这个变量定义在整个项目中有且只能有一份

//b.cpp	使用全局变量
#include "a.h"

void func()
{
	strcpy(QQUser,"123");
}
类静态变量的写法
//a.h	类中声明静态成员
class a
{
public:
	static char QQUser[11];
};

//a.cpp	定义类静态变量
#include "a.h"

char a::QQUser[11];

//使用
void func()
{
	strcpy(a::QQUser,"123");
}
foxzhouxp 2016-09-06
  • 打赏
  • 举报
回复
自己顶一下,帮看一下啊,谢了
  • 打赏
  • 举报
回复
你把全局变量放在头文件里吧。这样就不用纠结了,在一个你声明的是一个char【】数组 你调用的是char ,肯定报错
叶恭介叶恭介 2016-08-24
  • 打赏
  • 举报
回复
联系我,帮解决。
schlafenhamster 2016-08-24
  • 打赏
  • 举报
回复
"跟app对象放一起的" 那么 要加 extern 如 extern int Test;
  • 打赏
  • 举报
回复
引用 7 楼 foxzhouxp 的回复:
全局变量我就是写在图片中我圈出来那个地方啊,跟app对象放一起的,紧接着写咯。
可以写在CQQDlg.cpp的文件的前面,或者Cqqdlg.h文件里面,因为你在这个文件里面使用。 如果不在这两个文件里面写,至少要在文件开头写上extern 加上变量名,因为变量是在其他文件里面定义的。 这样做变量的问题应当就解决了。 再说回调函数的问题: 编译错误的提示是,第一个提示是回调函数未定义,第二个提示是回调函数重定义,且类型不同。 这个好好看看,你的声明和实现是否一致?或者有其他的地方有问题。。。 方法,先把回调函数的声明和实现都注释起来,然后编译再编译,看提示,慢慢找。
foxzhouxp 2016-08-24
  • 打赏
  • 举报
回复
我试了,把三个变量作为对话框类的成员变量,回调函数作为对话框类的成员函数并在前面加static,编译时更多错误呢,不知道什么原因了,该怎么写呢?谢谢!
foxzhouxp 2016-08-24
  • 打赏
  • 举报
回复





我这样修改过,还是出错啊,

三个变量为对话框类的成员变量,还是静态的,加了STATIC
那个回函数也是对框类的成员函数,还是静态的,加了STATIC,
可是编译还是出错呀,各位,谁帮一下忙.谢谢
foxzhouxp 2016-08-23
  • 打赏
  • 举报
回复
全局变量我就是写在图片中我圈出来那个地方啊,跟app对象放一起的,紧接着写咯。
  • 打赏
  • 举报
回复
能不能把代码中用到的三个全局变量写到对话框图类中作为成员变量呢 能啊,成员变量,全局变量都可以的。 你的全局变量写在了那里?怎么不行?有点奇怪啊。。 那个回调函数能不能作为对话框图类的成员函数呀,好似我修改了也是出错的,不知怎么啦,谢谢各位!!!!! 可以作为成员函数啊,但是要加上static前缀,才可以是回调函数。
凌乱哥 2016-08-23
  • 打赏
  • 举报
回复
1.先设置几个全局变量 这3个放到qqgameDlg.cpp的OnInitDialog前面 2.EnumFunc函数要放在调用它之前
schlafenhamster 2016-08-23
  • 打赏
  • 举报
回复
BOOL CALLBACK EnumFunc(HWND hWnd,LPARAM lParam) 移到 void CQQDlg::OnGame1() 前
foxzhouxp 2016-08-23
  • 打赏
  • 举报
回复



foxzhouxp 2016-08-23
  • 打赏
  • 举报
回复
谢谢各位了,帮帮忙啊,我在学习东西呢,呵, 枚举窗口这个就是出了问题,网上的例子都是控制台下的32位程序,只有这个是在MFC下面的枚举窗口例子,可是我跟着做却出错了,不知怎么处理,谢谢!!!!!
foxzhouxp 2016-08-23
  • 打赏
  • 举报
回复


16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧