我正在使用保证从URL栏获取值的代码进行工作,但现在IAccessible get_accValue属性的某些参数中出现一个编译错误。那么,如何解决?
任何帮助将不胜感激!
这是我的代码:
uses
oleacc;
function ffdoc: THandle;
const
A_szClassName: array[0..6] of PChar = ('MozillaUIWindowClass','MozillaWindowClass',
'MozillaWindowClass','MozillaWindowClass','MozillaContentWindowClass',
'MozillaWindowClass','MozillaWindowClass');
var
i: Integer;
begin
Result:= 0;
for i:= 0 to 6 do
Result:= FindWindowEx(Result,THandle(nil),A_szClassName[i],nil);
end;
function ffurl:string;
var
acc: IAccessible;
pw: PWChar;
begin
if AccessibleObjectFromWindow(ffdoc,OBJID_CLIENT,IID_IAccessible,Pointer(acc)) = 0 then
Acc.get_accValue(CHILDID_SELF,pw);
Result:= pw;
end;
如果查看的声明oleacc.IAccessible.get_accValue()
,很明显为什么会出现错误:
function Get_accValue(varChild: OleVariant; out pszValue: WideString): HResult; stdcall;
您正在试图通过一个PWChar
在那里的out WideString
预期。德尔福是非常严格的,当谈到var
和out
参数。
您需要更改pw
变量:
function ffurl:string;
var
acc: IAccessible;
pw: WideString;
begin
if AccessibleObjectFromWindow(ffdoc, OBJID_CLIENT, IID_IAccessible, acc) = 0 then
acc.get_accValue(CHILDID_SELF, pw);
Result := pw;
end;
COM使用BSTR
其字符串,Delphi使用该字符串包装WideString
。因此,始终WideString
在将字符串传入/传出COM接口时使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句