Wolfgang S Mitglied CADaver
Beiträge: 270 Registriert: 06.03.2006 AC 2009, C3D 2009, AC 2010, C3D 2010, AC 2011, C3D 2011, RVT 2010, RVT 2011, ASD 2011 und alles darunter bis R14 + Win XP, Win XP64, Win 7/64
|
erstellt am: 21. Jun. 2007 09:13 <-- editieren / zitieren --> Unities abgeben:
Hallo alle! Ich habe da was gebastelt - jetzt stelle ich den Code online, weil ich mir erhoffe wieder neues dazuzulernen - deswegen: gibt´s Tipps oder Verbesserungsvorschläge? Das Programm dient dazu, alle registrierten Versionen der ObjectDBX aus der Registry auszulesen, die DLLs zu ermitteln und die Version, dessen dll-Datei in den Supportpfaden vorhanden ist zu suchen. Somit möchte ich verhindern bei jeder neuen Acad-Version wieder alle ObjectDBX-Anwendungen umzuschreiben. das Proggi soll ab 2006 laufen, deswegen ist auch die Registrierung der dll nicht dabei.
Code:
(vl-catch-all-apply 'vla-GetInterfaceObject (append (list (vlax-get-acad-object)) (vl-remove-if 'not (mapcar (function (lambda (version) (if (findfile (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\CLSID\\" (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\" version "\\CLSID") ) "\\InProcServer32" ) ) ;prüft, welche dll-Datei für die ObjectDBX-Version registriert ist, -> ) ;wenn file in den Supportpfaden, dann isses gut version nil ) ) ) (vl-remove-if-not '(LAMBDA (VARIABLE) (wcmatch VARIABLE "ObjectDBX.AxDbDocument.*") ) (vl-registry-descendents "HKEY_CLASSES_ROOT") ) ;Rückgabe: Liste aller registrierten ObjectDBX-Versionen ) ) ;Liste mit einer gültigen Version als Text ) ) ;Rückgabewert ist VLA-Object der aktuellen DBX-Variante
lg Wolfgang S
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |