AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Aufruf von Properties über Automatisierung schlägt fehl?
Thema durchsuchen
Ansicht
Themen-Optionen

Aufruf von Properties über Automatisierung schlägt fehl?

Ein Thema von Whookie · begonnen am 19. Mai 2015 · letzter Beitrag vom 28. Mai 2015
 
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
446 Beiträge
 
Delphi 10.3 Rio
 
#1

Aufruf von Properties über Automatisierung schlägt fehl?

  Alt 19. Mai 2015, 15:44
Ich bin auf folgendes Phänomen gestoßen:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, Variants, ActiveX, ComObj;

Var
  FW: Variant;
  Res: Boolean;
begin
  try
    CoInitialize(nil);
    FW := CreateOleObject('HNetCfg.FwPolicy2');
    Res := FW.FirewallEnabled(1);
    WriteLn('Domain.FW.Enabled = ',BoolToStr(Res, True));
    ReadLn;
    FW := Unassigned;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Eigentlich sollte das kleine Programm ausgeben ob die Firewall ein/aus ist (unter Windows 7). Aber ich bekomme die Meldung: "....EOleSysError mit der Meldung 'Mitglied nicht gefunden' aufgetreten."

Gebe ich alle Member von FW aus gibts aber (unter anderem) folgende Einträge:

0.8:
get property FirewallEnabled (profileType: NET_FW_PROFILE_TYPE2_) : Boolean;
0.9:
put property FirewallEnabled (profileType: NET_FW_PROFILE_TYPE2_; riid: Boolean);


Also reingedebuggt und ich lande gleich mal in _DispInvoke() in System.Variants und da ist auch schon der Fehler ersichtlich...

Der Parameter "CallDesc" enthält als "CallType" eine 1 (= DISPATCH_METHOD) statt einer 2 (= DISPATCH_PROPERTYGET). Ändert man das dort geht der Aufruf auch wie erwartet durch.

Daher die Frage: Gibts eine spezielle Aufrufkonvention oder eine andere Methode wie ich meinem Aufruf den korrekten Typ mitgeben kann (sollte das nicht Anhand des Namens und der Signatur selbst erkannt werden?)?
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz