我在.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 ++)的链接也非常有用。
由于
答案 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