admin管理员组文章数量:1532460
目录
简述
模拟下一步按钮点击
模拟单选按钮接受协议,再进行下一步点击
简述
想要通过程序自动控制,省略手动点击安装的过程。 通过使用windowsAPI来实现
实现原理:通过安装程序窗口句柄,再获取控件句柄,向控件发送按钮点击消息,从而实现自动操作
模拟下一步按钮点击
#include <Windows.h>
HWND hWnd = FindWindow(NULL, _T("Microsoft Speech SDK 5.1 - InstallShield Wizard"));//获取窗口句柄
if(hWnd != NULL)
{
HWND hBtn = FindWindowEx(hWnd, NULL, NULL, _T("&Next >"));//获取按钮句柄
if(hBtn != NULL)
{
WORD btnID = (WORD)GetDlgCtrlID(hBtn);
SendMessage(hWnd, WM_COMMAND, MAKELONG(btnID, BN_CLICKED), (LPARAM)hBtn);//发送按钮点击消息
}
}
模拟单选按钮接受协议,再进行下一步点击
注意:两个单选按钮被一个Button类的部件所包裹着,从界面表面是看不出来的,可以通过Microsoft Spy++ 软件进行查看
如上图的颜色线标注,我将相同层次的部件用了同样的颜色进行标注,
bool radioFlag = false;//接受单选是否选中
//点击-单选接受按钮
hWnd = FindWindow(NULL, _T("Microsoft Speech SDK 5.1 - InstallShield Wizard"));//重新获取窗口句柄
if(hWnd != NULL)
{
HWND hCWnd = FindWindowEx(hWnd, NULL, _T("Button"), NULL);//获取两个单选按钮父部件句柄
if(hCWnd != NULL)
{
HWND hRadio = FindWindowEx(hCWnd, NULL, NULL, _T("I &accept the terms in the license agreement"));//获取接受单选按钮句柄
if(hRadio != NULL)
{
WORD btnID = (WORD)GetDlgCtrlID(hRadio);
SendMessage(hCWnd, WM_COMMAND, MAKELONG(btnID, BN_CLICKED), (LPARAM)hRadio);//发送点击消息给单选按钮
radioFlag = true;
}
}
}
//点击-下一步按钮
if(radioFlag)
{
HWND hBtn = FindWindowEx(hWnd, NULL, NULL, _T("&Next >"));//获取下一步按钮句柄
if(hBtn != NULL)
{
WORD btnID = (WORD)GetDlgCtrlID(hBtn);
SendMessage(hWnd, WM_COMMAND, MAKELONG(btnID, BN_CLICKED), (LPARAM)hBtn);//发送点击消息给下一步按钮
}
}
版权声明:本文标题:在windows上实现安装包自动化安装 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1726258727a1062849.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论