假设App_Control的值为“window_button”,其中window是窗口的标题,button是按钮的text;我的想法是把“字符串分割”得到这两个值后先通过“window”找到窗口的句柄,然后遍历窗口的所有控件,通过“button”找到BUTTON的句柄;通过句柄给button发消息实现点击操作;帮忙检查一下程序
BOOL AppConfig_line::ClickButton()
{
LPTSTR pName = App_Control;
//开始风格字符串
TCHAR ControlName[MAX_PATH];
TCHAR WindowName[MAX_PATH];
TCHAR *pTemp; pTemp = wcsrchr(pName, _T('_'));
if (pTemp == NULL)
{
return FALSE;
}
//得到控件的text
_tcscpy(ControlName,(pTemp + 1));
*pTemp = '\0';
//得到窗口的值
_tcscat(WindowName, pName);
TCHAR TempName[MAX_PATH];
HWND hWindow =::FindWindow(NULL,WindowName);
HWND pWnd = GetWindow(hWindow,GW_CHILD);
//遍历窗口控件
while(pWnd != NULL)
{
memset(TempName, 0, sizeof(TempName));
int m = GetWindowText( pWnd, TempName,sizeof(TempName));
//比较窗口控件的值和指定控件值是否相等
if(0 ==_tcscmp(TempName ,ControlName))
{
//发送点击消息
PostMessage(pWnd, WM_LBUTTONDOWN, MK_LBUTTON, 0);
PostMessage(pWnd, WM_LBUTTONUP, 0, 0);
Sleep(1000);
return true;
break;
}
pWnd = GetWindow( pWnd, GW_HWNDNEXT);
} return false;
}由于本人水平有限,不知道字符串的分割是否正确,
但是每次执行完GetWindowText()后pWnd就指向了一个空地址,而且ControlName的值也成了空字符串,
百思不得解!
BOOL AppConfig_line::ClickButton()
{
LPTSTR pName = App_Control;
//开始风格字符串
TCHAR ControlName[MAX_PATH];
TCHAR WindowName[MAX_PATH];
TCHAR *pTemp; pTemp = wcsrchr(pName, _T('_'));
if (pTemp == NULL)
{
return FALSE;
}
//得到控件的text
_tcscpy(ControlName,(pTemp + 1));
*pTemp = '\0';
//得到窗口的值
_tcscat(WindowName, pName);
TCHAR TempName[MAX_PATH];
HWND hWindow =::FindWindow(NULL,WindowName);
HWND pWnd = GetWindow(hWindow,GW_CHILD);
//遍历窗口控件
while(pWnd != NULL)
{
memset(TempName, 0, sizeof(TempName));
int m = GetWindowText( pWnd, TempName,sizeof(TempName));
//比较窗口控件的值和指定控件值是否相等
if(0 ==_tcscmp(TempName ,ControlName))
{
//发送点击消息
PostMessage(pWnd, WM_LBUTTONDOWN, MK_LBUTTON, 0);
PostMessage(pWnd, WM_LBUTTONUP, 0, 0);
Sleep(1000);
return true;
break;
}
pWnd = GetWindow( pWnd, GW_HWNDNEXT);
} return false;
}由于本人水平有限,不知道字符串的分割是否正确,
但是每次执行完GetWindowText()后pWnd就指向了一个空地址,而且ControlName的值也成了空字符串,
百思不得解!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货