Announcement

Collapse
No announcement yet.

OleVariant -Fehler: "Falscher Parameter..."

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • OleVariant -Fehler: "Falscher Parameter..."

    Hallo zusammen,

    möchte über das IAccessible-Interface auf Windows-Objekte zugreifen. Bekomme nun leider bei Aufruf einer entsprechenden Funktion den o.g. Fehler. Was mache ich falsch ?

    Hier der Code von beiden Units:

    <PRE>
    UNIT 1:
    program MSN6Reader;

    uses
    Windows, Accessibility_TLB, sndkey32, sysutils, classes, Comobj;

    {$R *.res}

    var
    handle: HWND;
    accParent: IAccessible;

    procedure EnumerarControles(var accParent: IAccessible);
    var
    item, count: Integer;
    oItem: OleVariant;
    accChild: IAccessible;
    Dispatcher: IDispatch;
    begin

    count := accParent.accChildCount;
    for item := 1 to count do
    begin
    VarCast(oItem, item, varInteger);
    // BEI FOLGENDER ZEILE ERSCHEINT DER FEHLER:
    Dispatcher := accParent.accChild[oItem];
    Dispatcher.QueryInterface(IID_IAccessible, accChild);

    MessageBoxW(0, PWideChar(accChild.accValue[0]), PWideChar(accChild.accName[0]), 0);

    EnumerarControles(accChild);
    end;

    end;

    begin
    CoInitialize(nil);

    handle := FindWindow(nil,'Microsoft Word');
    AccessibleObjectFromWindow(handle, 0, IID_IAccessible, accParent);
    if accParent <> nil then
    enumerarControles(accParent);

    CoUninitialize;
    end.

    UNIT 2:
    unit Accessibility_TLB;

    interface

    uses Windows;

    const
    IID_IAccessible: TGUID = '{618736E0-3C3D-11CF-810C-00AA00389B71}';
    oleacc = 'oleacc.dll';
    ole32 = 'ole32.dll';

    type
    IAccessible = interface(IDispatch)
    ['{618736E0-3C3D-11CF-810C-00AA00389B71}']
    function Get_accParent: IDispatch; safecall;
    function Get_accChildCount: Integer; safecall;
    function Get_accChild(varChild: OleVariant): IDispatch; safecall;
    function Get_accName(varChild: OleVariant): WideString; safecall;
    function Get_accValue(varChild: OleVariant): WideString; safecall;
    function Get_accDescription(varChild: OleVariant): WideString; safecall;
    function Get_accRole(varChild: OleVariant): OleVariant; safecall;
    function Get_accState(varChild: OleVariant): OleVariant; safecall;
    function Get_accHelp(varChild: OleVariant): WideString; safecall;
    function Get_accHelpTopic(out pszHelpFile: WideString; varChild: OleVariant): Integer; safecall;
    function Get_accKeyboardShortcut(varChild: OleVariant): WideString; safecall;
    function Get_accFocus: OleVariant; safecall;
    function Get_accSelection: OleVariant; safecall;
    function Get_accDefaultAction(varChild: OleVariant): WideString; safecall;
    procedure accSelect(flagsSelect: Integer; varChild: OleVariant); safecall;
    procedure accLocation(out pxLeft: Integer; out pyTop: Integer; out pcxWidth: Integer;
    out pcyHeight: Integer; varChild: OleVariant); safecall;
    function accNavigate(navDir: Integer; varStart: OleVariant): OleVariant; safecall;
    function accHitTest(xLeft: Integer; yTop: Integer): OleVariant; safecall;
    procedure accDoDefaultAction(varChild: OleVariant); safecall;
    procedure Set_accName(varChild: OleVariant; const pszName: WideString); safecall;
    procedure Set_accValue(varChild: OleVariant; const pszValue: WideString); safecall;
    property accParent: IDispatch read Get_accParent;
    property accChildCount: Integer read Get_accChildCount;
    property accChild[varChild: OleVariant]: IDispatch read Get_accChild;
    property accName[varChild: OleVariant]: WideString read Get_accName write Set_accName;
    property accValue[varChild: OleVariant]: WideString read Get_accValue write Set_accValue;
    property accDescription[varChild: OleVariant]: WideString read Get_accDescription;
    property accRole[varChild: OleVariant]: OleVariant read Get_accRole;
    property accState[varChild: OleVariant]: OleVariant read Get_accState;
    property accHelp[varChild: OleVariant]: WideString read Get_accHelp;
    property accHelpTopic[out pszHelpFile: WideString; varChild: OleVariant]: Integer read Get_accHelpTopic;
    property accKeyboardShortcut[varChild: OleVariant]: WideString read Get_accKeyboardShortcut;
    property accFocus: OleVariant read Get_accFocus;
    property accSelection: OleVariant read Get_accSelection;
    property accDefaultAction[varChild: OleVariant]: WideString read Get_accDefaultAction;
    end;

    IAccessibleDisp = dispinterface
    ['{618736E0-3C3D-11CF-810C-00AA00389B71}']
    property accParent: IDispatch readonly dispid -5000;
    property accChildCount: Integer readonly dispid -5001;
    property accChild[varChild: OleVariant]: IDispatch readonly dispid -5002;
    property accName[varChild: OleVariant]: WideString dispid -5003;
    property accValue[varChild: OleVariant]: WideString dispid -5004;
    property accDescription[varChild: OleVariant]: WideString readonly dispid -5005;
    property accRole[varChild: OleVariant]: OleVariant readonly dispid -5006;
    property accState[varChild: OleVariant]: OleVariant readonly dispid -5007;
    property accHelp[varChild: OleVariant]: WideString readonly dispid -5008;
    property accHelpTopic[out pszHelpFile: WideString; varChild: OleVariant]: Integer readonly dispid -5009;
    property accKeyboardShortcut[varChild: OleVariant]: WideString readonly dispid -5010;
    property accFocus: OleVariant readonly dispid -5011;
    property accSelection: OleVariant readonly dispid -5012;
    property accDefaultAction[varChild: OleVariant]: WideString readonly dispid -5013;
    procedure accSelect(flagsSelect: Integer; varChild: OleVariant); dispid -5014;
    procedure accLocation(out pxLeft: Integer; out pyTop: Integer; out pcxWidth: Integer;
    out pcyHeight: Integer; varChild: OleVariant); dispid -5015;
    function accNavigate(navDir: Integer; varStart: OleVariant): OleVariant; dispid -5016;
    function accHitTest(xLeft: Integer; yTop: Integer): OleVariant; dispid -5017;
    procedure accDoDefaultAction(varChild: OleVariant); dispid -5018;
    end;

    function AccessibleObjectFromWindow(hwnd, dwObjectID: DWORD; const riid: TGUID; out ppvObject: IAccessible): HResult; stdcall;
    function CoInitialize(lpReserved: Pointer): HResult; stdcall;
    procedure CoUninitialize; stdcall;

    implementation

    function AccessibleObjectFromWindow; external oleacc name 'AccessibleObjectFromWindow';
    function CoInitialize; external ole32 name 'CoInitialize';
    procedure CoUninitialize; external ole32 name 'CoUninitialize';

    end.
    </PRE>

    Bin für jeden Tip dankbar!

    Gruss
    Jan
Working...
X