Aller au contenu

Chargemnent automatique des DLL


Messages recommandés

Posté(e)

Salut,

 

Les fichiers DLL créés avec .NET se chargent dans AutoCAD avec la commande NETLOAD.

 

On peut donc ajouter une expression du type :

(command "_netload" "NomDuFichier.dll")

dans le fichier AutoCAD.lsp (si le fichier dll n'est pas dans un répertoire des chemins de recherche, stipuler le chemin complet)

 

Une autre méthode, plus élégante, consiste à provoquer leur chargement automatique en ajoutant une clé dans la base de registre dans :

HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.0\ACAD-5001:40C\Applications

(R17.0\ACAD-5001:40C\ varie suivant les versions)

Cette clé doit comporter 4 entrées :

DESCRIPTION

LOADCTRLS

LOADER

MANAGED

dont les valeurs sont, respectivement, une description, 2 (chargement automatique), le chemin complet du fichier dll et 1.

 

(source : Through the Interface)

 

La fonction LISP ci-dessous : DllAutoLoad s'occupe d'écrire tout ça.

Elle requiert 3 arguments :

- le nom de la nouvelle clé

- une description

- le nom du fichier DLL ou, s'il n'est pas dans un répertoire des chemins de recherche, son chemin complet.

 

Exemple :

(DllAutoLoad "GetFileLisp" "Charger GetFileLisp.dll" "GetFileLisp.dll")

 

    ;;; DllAutoLoad
   ;;; Inscrire une DLL dans la base de registre pour qu'elle se charge automatiquement
   ;;;
   ;;; Arguments
   ;;; key : (string) la clé dans la base de registre
   ;;; descr : (string) description/commentaire
   ;;; filename : (string) nom ou chemin complet du fichier .dll
    
   (defun DllAutoLoad (key descr filename / fullname)
     (vl-load-com)
     (if (setq fullname (findfile filename))
       (mapcar
         '(lambda (k v)
            (vl-registry-write
              (strcat "HKEY_CURRENT_USER\\"
                      (vlax-product-key)
                      "\\Applications\\"
                      key
              )
              k
              v
            )
          )
         '("DESCRIPTION" "LOADCTRLS" "LOADER" "MANAGED")
         (list descr 2 fullname 1)
       )
       (princ
         (strcat "\nLe fichier \"" filename "\" est introuvable.")
       )
     )
   )

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut,

 

Une librairie DLL (Dynamic Link Library) contient des ressources ou du code accessible à plusieurs applications.

Les langages de programmation comme C, C++, Delphi, dot NET peuvent générer des DLL.

L'environnement Windows (donc AutoCAD) utilise très largement les DLL.

Les ARX sont en fait des DLL (générées en C++) renomées.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

La plupart (si ce n'est toutes) des applications Windows utilisent System.dll.

De même toute les applications AutoCAD développées en dot NET utilisent acdbmdg.dll et acmgd.dll

 

Tu peux voir ici.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

  • 9 mois après...
Posté(e)

Salut à tous

 

Bonsoir (gile)

 

Merci pour tes suggestions trés pertinentes, que malheureusement je ne pourrai pas tester (contrainte de temps) mais je les garde sous le coude au cas où ....

 

Effectivement j'aurais peut être du poser ma question sur ce forum plutôt que sur celui de A2010.

 

En réponse à la question de lili2006

 

Une DLL ou un ARX sont des fichiers compilés qui peuvent contenir une ou plusieurs commandes directement utilisables (comme "PolylineEdit2.dll qui contient les 2 commandes AVX et DVX) ou des fonctions qui peuvent être appelées par d'autres programmes (passé un moment j'avais écrit une DLL en Fortran Power Station qui contenait 2 fonctions que j'appelais à partir d'un programme en Visual Basic).

 

Bonne nuit

 

A+

 

belam

 

 

 

 

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité