.net UIAutomation C ++中的简单示例

时间:2013-03-27 14:01:10

标签: microsoft-ui-automation

我在.Net中经历UIAuomation Clients API并且必须使用C ++而不是C#。这是因为SendInput函数仅在C ++中可用,并且似乎是将鼠标点击发送到任何应用程序的最可靠方法(与此问题相同的问题:How to manipulate a control without any pattern implemented?)。

目前我正在努力使用C ++版本的UIAutomation API,因为msdn上缺少文档。有人可以告诉我如何使用CreatePropertyCondition,UIA_NamePropertyId和“Windows Media Player”创建一个PropertyCondition。

char *name = new char[30];
strcpy(name, "Windows Media Player");
VARIANT vt;
vt.vt = VT_CARRAY; // This is probably wrong
vt.pcVal = name;
hr = g_pAutomation->CreatePropertyCondition(UIA_NamePropertyId, vt, &condition);
if(!SUCCEEDED(hr)){
    printf("Cannot createpropertycondition in getWMP\n");
    return hr;
}

我总是进入if状态。 g_pAutomation变量工作正常,我能够使RootElement正常运行。

此外,指向简单教程/示例(使用C ++)的链接也非常有用。

由于

1 个答案:

答案 0 :(得分:0)

你应该尝试:

VARIANT vt;
vt.vt = VT_BSTR;
vt.bstrVal = SysAllocString(windowName);

很难导航MSDN,但我找到了一个例子: http://msdn.microsoft.com/en-us/library/windows/desktop/ff625913(v=vs.85).aspx