![]() |
Anzeige:
|
|
|||||||
| Spezielles Für die Bereiche API, Subclassing, Inline-Assembler, Prozesse, ect. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 7.947
|
Um ein COM Objekt zu initialiesieren, benötige ich die CLSID (für die DLL, die geladen werden muss -> InprocServer32) und die IID (Interface ID).
Die IDs der Interfaces finde ich unter dem Registryschlüssel HKEY_CLASSES_ROOT\Interface und die CLSIDs stehen unter HKEY_CLASSES_ROOT\CLSID. Gibt es eine Möglichkeit einem Interface aus der Registry die dazugehörge CLSID zuzuordnen?
__________________
______________ Mfg AHT |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 43
Beiträge: 4.725
|
Müsstest den Pascal mal fragen, der kennt sich mit diesen Sachen gut aus.
__________________
Gruß, Frank Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#3 (Direktlink) | |
|
Erfolgreich angemeldet
![]() Registriert seit: 13.02.2009
Beiträge: 19
|
Hi Leute!
Zitat:
Aber ich habe seinerzeit das Pferd von hinten aufgezäumt und alle CLSIDs / IIDs aus C++-Headern oder diversen Beispielen anderer Programmiersprachen rausgesucht. Mein einziger Tipp an AHT wären die diversen Analysetools für COM/OLE, die in der Hilfe zum OCX-Package (auf XProfan.com unter 'Includes' danach suchen) erwähnt werden. SeeYou Pascal |
|
|
|
|
|
|
#4 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 7.947
|
Im Prinzip mache ich das genau so.
Die richtige Adresse in der Liste für die CallBacks zu finden war etwas "Probiererei" Code:
CALL(LONG(COMMAND&,80),pfd&,addr(Result&)) 'Result Callbackadresse holen Code:
hr := Ifd.GetResult(Isi);
if Succeeded(hr) then begin Assert(Isi <> nil);
// TODO: just for testing, needs to be implemented properly
if Succeeded(Isi.GetDisplayName(SIGDN_NORMALDISPLAY, pWc))
and (pWc <> nil)
then begin
s := pWc;
FileName := s;
end;
end;
Code:
CALL(LONG(COMMAND&,80),pfd&,addr(Result&)) 'Result Callbackadresse holen Command& = Long(Result&,0) CALL(LONG(COMMAND&,20),Result&,$80058000,addr(Str&)) 'Displayname holen Ich dachte mir, wenn es einen Zusammenhang zwischen der CLSID und dem Interface über die Registry gäbe, könnte man sich auch problemlos um undokumentierte Objekte kümmern - kann den aber auch zur Zeit nicht erkennen. Ist ja im Prinzip nur eine einfache Liste für CallBacks...
__________________
______________ Mfg AHT |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| COM-Objekte | Gerikom7 | Visual Basic, Visual Basic.NET | 1 | 03.12.2006 09:53 |
| Objekte ersetzen | Elytress | Homepagegestaltung | 5 | 24.08.2006 23:54 |
| Objekte erstellen | Phill | Software - Allgemein | 5 | 09.05.2006 16:18 |
| Registry Mechanic, registry kaputt, backup draufgeben? | poeli001 | Windows XP | 2 | 16.09.2005 14:56 |
| Zeiger auf Objekte | Martin Lottner | C/C++, Visual C++, Visual C++.NET | 1 | 15.11.2004 19:48 |