能力值:
( LV2,RANK:10 )
|
-
-
2 楼
代码?想看,能贴上来,学习下
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
我这能看见==!在贴一次
#include "stdafx.h"
#include <uiautomation.h>
IUIAutomation *g_pIUAutomation=NULL;
//我们button 的名字 可以通过inspect找到
WCHAR wcButtonName1[]=L"Button4";
HWND g_hwd=NULL;
int _tmain(int argc, _TCHAR* argv[])
{
//因为是com所以你懂的
HRESULT hr=CoInitialize(NULL);
if(SUCCEEDED(hr))
{
IUIAutomationElement* pRoot = NULL;
IUIAutomationElement* pFound = NULL;
IUIAutomationCondition* pCondition=NULL;
IUIAutomationInvokePattern *pPattern = NULL;
do
{
//初始化IUAutomation实例
hr = CoCreateInstance(CLSID_CUIAutomation, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&g_pIUAutomation));
if(FAILED(hr))
{
printf("create IUAutomation instance failed ");
break;
}
//创建条件搜索
VARIANT varName;
varName.vt=VT_BSTR;
varName.bstrVal=SysAllocString(wcButtonName1);
//这个是根据句柄获得该 句柄下所有的元素,我注释掉了
// hr=g_pIUAutomation->ElementFromHandle(g_hwd,&pRoot);
//获得根目录下,就是从开始 下所有控件元素
hr=g_pIUAutomation->GetRootElement(&pRoot);
if (FAILED(hr) || pRoot == NULL)
{
printf("get root element failed/n");
break;
}
//创建条件搜索,根据我们button名字搜索
hr = g_pIUAutomation->CreatePropertyCondition(UIA_NamePropertyId, varName, &pCondition);
if(FAILED(hr))
{
printf("create condition failed/n");
break;
}
pRoot->FindFirst(TreeScope_Subtree, pCondition, &pFound);
// pRoot->FindFirst(TreeScope_Children, pCondition, &pFound);
//调用invoke
hr = pFound->GetCurrentPatternAs(UIA_InvokePatternId, IID_PPV_ARGS(&pPattern));
hr = pPattern->Invoke();
} while (FALSE);
if(g_pIUAutomation!=NULL)
{
g_pIUAutomation->Release();
g_pIUAutomation=NULL;
}
if(pRoot!=NULL)
{
pRoot->Release();
pRoot=NULL;
}
if(pFound!=NULL)
{
pFound->Release();
pFound=NULL;
}
if(pCondition!=NULL)
{
pCondition->Release();
pCondition=NULL;
}
if(pPattern!=NULL)
{
pPattern->Release();
pPattern=NULL;
}
CoUninitialize();
}
else
{
printf("initialize com failed/n");
}
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
学习了。
长知识。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
学习了感谢分享
|
能力值:
( LV12,RANK:210 )
|
-
-
6 楼
用这个东西要求你的对话框上面的 文字和控件ID 是唯一的,如果有重叠的情况,他是分辨不了的。个人感觉AutoIt3这个更好。
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
这个是最简单的demo。创建条件搜索可以解决的。
比如hr=g_pIUAutomation->ElementFromHandle(g_hwd,&pRoot);
获得这个窗口下的元素,就可以解决和其他程序控件名字冲突。
用好IUIAutomationCondition这个接口可以解决很多问题
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
不错 学习了
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
Thank you very much
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
谢谢楼主提供的例仔~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
楼主有这个库吗?。。。。。能发一下吗。。。。。
|
能力值:
( LV13,RANK:260 )
|
-
-
12 楼
autoit3 better
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
better now...........
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
谢谢楼主分享经验
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
都还行 呵呵
|
|
|