修改DlgLogin.cpp实现C++应用自动跳过登录对话框无需手动点击OK
C++客户端自动跳过登录弹窗实现方法
背景
现有合作方交付的C应用,团队技术栈以Python、JS为主,无C开发经验,需要实现启动EXE后自动完成登录、无需手动点击登录弹窗OK按钮的功能。已提前在DlgLogin.cpp文件中硬编码了登录所需的账号、密码、服务器IP信息。
修改步骤
仅需要修改DlgLogin.cpp文件中的CDlgLogin::OnInitDialog函数即可,修改方式如下:
- 找到原
OnInitDialog函数的代码:
BOOL CDlgLogin::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here char szBuf[10] = {0}; int n = szBuf[9]-szBuf[0]; return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
- 在
return TRUE之前新增两行代码,修改后完整代码如下:
BOOL CDlgLogin::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here char szBuf[10] = {0}; int n = szBuf[9]-szBuf[0]; // 新增自动登录逻辑开始 m_bLogining = FALSE; PostMessage(WM_COMMAND, MAKEWPARAM(IDOK, BN_CLICKED), (LPARAM)GetDlgItem(IDOK)->GetSafeHwnd()); // 新增自动登录逻辑结束 return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
逻辑说明
OnInitDialog是登录弹窗初始化完成后系统自动执行的函数,在这个阶段触发登录逻辑不会影响原有流程- 先将
m_bLogining设置为FALSE,确保可以进入OnOK函数中的登录逻辑分支 - 发送
IDOK按钮的点击消息,完全复现手动点击OK按钮的登录流程,登录成功后会自动加载资源、进入主应用 - 请确保DlgLogin.cpp中硬编码的账号、密码、服务器IP为有效值,否则会弹出登录失败的提示框
内容的提问来源于stack exchange,提问作者duvankre8
相关产品推荐
相关产品推荐

