Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi COM / ActiveX - "Schnittstelle nicht unterstützt" (https://www.delphipraxis.net/147203-com-activex-schnittstelle-nicht-unterstuetzt.html)

Sereby 3. Feb 2010 16:55


COM / ActiveX - "Schnittstelle nicht unterstützt"
 
Hiho, ich nerv mal wieder :)

ich habe folgendes Problem:
ich möchte versuchen auf den Microsoft Update Catalog per ActiveX zuzugreifen und verwende die DLL die beim Besuch der Seite im Internet Explorer heruntergeladen wird direkt.

- Schirtt 1: Registrieren der dll per regsvr32 -> OK
- Schritt 2: Importieren der Typenbibliothek in ein Package mit Komponenten-Wrapper (D2009) -> OK
- Schritt 3: Ziehen der neuen Komponente auf eine leere Form eines neuen Projektes -> "Schnittstelle nicht unterstützt" Fehlermeldung!

Beim versuch TMUCatalogWebControl manuell zu erstellen kommt ebenfalls immer die Fehlermeldung.
Ich habe bereits versucht mit Process Explorer dahinter zu kommen warum der da rummeckert weil es muss ja ne fehlerhafte registrierung sein aber unregistrieren und erneutes registrieren funktioniert nicht allerdings die Webseite im IE funktioniert ohne Probleme!

Mir gehts darum, dass ich die Updates da so suchen kann wie es da ist bzw besser eingrenzen kann und dass er auch alles findet!
Derzeit lese ich die windows update info datei (17mb komprimierte .CAB) direkt aus welche allerdings nicht alle Updates enthält :-/ Der Windows Update Katalog ist da viel besser deswegen möchte ich den auslesen lassen.

Ich verwende Delphi 2009 U3 auf Windows 7 x64 RTM

MfG Sereby

Bernhard Geyer 3. Feb 2010 17:13

Re: COM / ActiveX - "Schnittstelle nicht unterstützt&am
 
Verwende nicht den Wrapper sondern direkt das Interface und die entsprechende Co-Klasse.

Manche COM/ActiveX-COntrols funktionieren nicht direkt mit Delphi sondern z.B. nur wenn sie vom TWebBrowser (=IE) gehostet sind (z.B. Adobe SVG Viewer)

Sereby 3. Feb 2010 17:16

Re: COM / ActiveX - "Schnittstelle nicht unterstützt&am
 
kannst du mir ein code-beispiel geben wie ich das aufbauen muss? ich habe leider null plan von interfaces und habe die bisher nie verwendet :-/

Sereby 4. Feb 2010 09:03

Re: COM / ActiveX - "Schnittstelle nicht unterstützt&am
 
ich wäre weiterhin an einem Code-beispiel bzw direkter hilfe sehr interessiert ^^

ich hab mal mit Processmonitor verglichen was IE bzw mein Programm in der registry so machen während versucht wird das ActiveX zu initialisieren:

Internet Explorer:
http://sereby.org/_privat/IE.png

Mein Tool:
http://sereby.org/_privat/my.png


warum findet der IE das was mein teil nicht findet???
bitte um dringende hilfe :-/

sirius 4. Feb 2010 10:02

Re: COM / ActiveX - "Schnittstelle nicht unterstützt&am
 
Die Klasse TMUCatalogWebControl ist von TOleControl abgeleitet. Diese wiederum erstellt die Instance von MUCatalogWebControl auf IOleObject. Und letzteres entspricht anscheinend nicht der Tatsache und wird deshalb nicht unterstützt. --> Fehler in TypeLib, die Klasse solltest du nicht benutzen.

Das Erstellen einer Instanz funktioniert zumindest so:
Delphi-Quellcode:
uses MicrosoftUpdateCatalogWebControlLib_TLB, comobj;

procedure TForm1.Button1Click(Sender: TObject);
var MUCatalogWebControl:IMUCatalogWebControl;
begin
  MUCatalogWebControl:=CreateComObject(CLASS_MUCatalogWebControl) as IMUCatalogWebControl;

end;
//da MUCatalogWebControl ein Interface ist, braucht man hier nicht aufräumen, das macht Delphi von selbst
Jedes Aufrufen einer Methode führt jetzt aber zu einem OLE Fehler: $800C0002 (was anscheinend "invalid url" bedeutet).

Sereby 4. Feb 2010 10:24

Re: COM / ActiveX - "Schnittstelle nicht unterstützt&am
 
danke erstmal für den schritt.
beim IE sucht er nach einem GUID im AppId zweig in der registry.

durch deine modifikation stürzt er zwar nicht ab allerdings sucht er auch nicht wie der IE in AppID sondern in ProgID!
und die GUID die IE verwendet wird bei meinem tool garnicht behandelt

Der teil hier:
Zitat:

Date & Time: 04.02.2010 09:42:36
Event Class: Registry
Operation: RegQueryValue
Result: SUCCESS
Path: HKCR\Wow6432Node\CLSID\{5AE58FCF-6F6A-49B2-B064-02492C66E3F4}\AppId
TID: 3180
Duration: 0.0000069
Type: REG_SZ
Length: 78
Data: {01BAB9B9-D46F-4043-B5F3-6B1618B4A4E5}
{5AE58FCF-6F6A-49B2-B064-02492C66E3F4} -> CLASS_MUCatalogWebControl
{01BAB9B9-D46F-4043-B5F3-6B1618B4A4E5} -> wird nicht von meinem test-tool aufgerufen entspricht aber MUCatalogWebControl Class!

bleibt auch noch die frage wie ich mit dem ding dann nach updates suchen kann.. denn bei den methoden die generiert wurden sieht man nichts was nach suchen aussehen könnte :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz