这么基本的问题,但我被卡住了......
我正在尝试在 Windows 7 上使用 Delphi 2007 (Win32) 开始使用 UI 自动化。似乎我没有声明我需要使用的某些方法和类型。我在这台机器上安装了 .NET Framework 4.x,但我从 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\UIAutomationClient.dll ... 导入了一个类型库,位于 UIAutomationClient_TLB 中。我看到的是:
UIAutomationClientMajorVersion = 1;
UIAutomationClientMinorVersion = 0;
我不确定这是否是问题(错误版本)。我可以毫无问题地声明以下内容:
var
UIAuto: IUIAutomation;
Element: IUIAutomationElement;
但是 IUIAutomationElement 的方法似乎丢失了。例如,声明方法的接口中没有任何内容:
IUIAutomationElement.TryGetCurrentPattern()
...根据 msdn.microsoft.com 的说法,这是一种至少可以追溯到 .NET 3.0 的接口方法。
我在哪里/如何获得必要的接口声明?这可能是注册问题吗?如果是这样,需要注册什么,如何注册?
最终,我想通过 UI 自动化从控件中检索文本,但从技术上讲,我认为您必须先编译代码才能将其视为失败。;)
var
UIAuto: IUIAutomation;
Element: IUIAutomationElement;
RetVal: HResult;
APattern: AutomationPattern; //not defined!
ValuePattern : ValuePattern; //not defined!
begin
UIAuto := CoCUIAutomation.Create;
Element := UIAuto.GetFocusedElement(RetVal);
if Assigned(Element) then begin
if Element.TryGetCurrentPattern(ValuePattern.Pattern, APattern) then begin //not defined!
Result := ValuePattern.Current.Value; //not defined!
...
end;