(gile) Posté(e) le 27 septembre 2012 Posté(e) le 27 septembre 2012 Salut, Suite à ce sujet, j'ai essayé de faire quelque chose en .NET pour trouver toutes les variables d'environnement accessibles par la fonction LISP getenv.Je ne suis pas sûr de toutes les récupérer mais je pense en avoir pas mal (autour de 300 suivant les versions), faites moi savoir si vous en trouvez qui ne seraient pas retournées par la fonction. Les DLLs contenues dans GetEnvVars.zip définissent une fonction LISP : gc-getenvvars qui retourne une liste des noms de variables d'environnement.Charger la Dll correspondant à la version d'AutoCAD (GetEnvVars_18 pour A2010 à A2012 ou GetEnvVars_19 pour A2013) et utiliser la fonction gc-getenvvars sans arguments :(setq lst (gc-getenvvars)) La fonction cherche récursivement dans la base de registre toutes les valeurs de toutes les clés à partir la clé de produit de la version courante d'AutoCAD aux quelles sont ajoutées les valeurs de HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. Toutes ces valeurs sont ensuite testée avec GetEnv pour écarter celles qui retourne nil.Le code C# utilise Linq pour traiter les collections, la récursivité pour parcourir l'arborescence de la base de registre, P/Invoke pour accéder à la méthode ObjectARX non gérée acedGetEnv et la compilation conditionnelle pour partager le même code entre les projets R18 et R19:using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using Microsoft.Win32; namespace Gile.EnvironmentVariable { public class Functions { [LispFunction("gc-GetEnvVars")] public ResultBuffer GetEnvVars(ResultBuffer resbuf) { if (resbuf != null) { Application.ShowAlertDialog("nombre d'arguments trop important"); throw new ArgumentException(); } #if ACAD_19 string prodKey = HostApplicationServices.Current.UserRegistryProductRootKey; #else string prodKey = HostApplicationServices.Current.RegistryProductRootKey; #endif string ctrlKey = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; return new ResultBuffer( GetValues(prodKey) .Concat(Registry.LocalMachine.OpenSubKey(ctrlKey).GetValueNames()) .Distinct() .Where(s => GetEnv(s) != null) .OrderBy(s => s) .Select(s => new TypedValue((int)LispDataType.Text, s)) .ToArray()); } private IEnumerable<string> GetValues(string key) { RegistryKey rk = Registry.CurrentUser.OpenSubKey(key); return rk.GetValueNames() .Concat(rk.GetSubKeyNames() .SelectMany(k => GetValues(key + "\\" + k))); } #if ACAD_19 [system.Security.SuppressUnmanagedCodeSecurity] [DllImport("accore.dll", EntryPoint = "acedGetEnv", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)] extern static int acedGetEnv(string envName, string returnValue); #else [system.Security.SuppressUnmanagedCodeSecurity] [DllImport("acad.exe", EntryPoint = "acedGetEnv", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)] extern static int acedGetEnv(string envName, string returnValue); #endif public static string GetEnv(string envName) { string returnValue = new string(char.MinValue, 1024); int stat = acedGetEnv(envName, returnValue); return stat == -5001 ? null : returnValue; } } } Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 28 septembre 2012 Posté(e) le 28 septembre 2012 Salut (gile) Sympa ta fonction :DJuste une petite remarque, si on n'a pas le message (cadxp) associé à dll, on ne connait pas le nom de la commande.Ce serait bien d'avoir un message lors du chargement de la DLL qui indique quoi faire. On pourrai aussi aller plus loin, comme aussi tracer toutes les variables d'autocad (un peu comme le lisp acadinfo des express) et ainsi pouvoir faire un comparatif de variables entre plusieurs dessins, voire d'ordinateurs. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
tyrese69_ Posté(e) le 28 septembre 2012 Posté(e) le 28 septembre 2012 Bonjour (giles),Est ce normal que la liste soit tronquée dans la fenêtre ? Commande: (setq lst (gc-getenvvars))es color" "Perspective grid minor lines tint" "Perspective ground horizon" "Perspective ground origin" "Perspective hotspot color" "Perspective lux at distance color" "Perspective sky horizon" "Perspective sky zenith" "Perspective start color" "Perspective sub-surface azimuth" "Perspective sub-surface horizon" "Perspective Web color" "Perspective Web shape color" "Perspective .....tint" "Perspective grid major lines color" "Perspective grid major lines tint" "Perspective grid minor lin Un autre Lyonnaisdaniel OLIVES
(gile) Posté(e) le 28 septembre 2012 Auteur Posté(e) le 28 septembre 2012 tyres69_,Oui, j'ai remarqué ça sur 2013, je pense que c'est un problème d'affichage avec la nouvelle fenêtre de texte.Essaye dans l'éditeur Visual LISP, tu peux copier/coller la liste depuis la console vers une nouvelle fenêtre et la formater (Ctrl+alt+F). Patrick_35,Le nom de la fonction LISP : gc-getenvvars est dans le premier message.Mon but était juste de lister toutes (?) les variables d'environnement, ceci étant fait, je laisse chacun utiliser cette liste en LISP selon ses besoins (avec statenv de bonuscad, par exemple). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 28 septembre 2012 Posté(e) le 28 septembre 2012 :( Je suis pas enregistré sur "the swamp" (je consulte juste de temps en temps, mais ne participe pas.Bien que je me débrouille en anglais, cela ne reste pas mon fort), je ne peux donc retirer la pièce.Pour l'occasion, j'ai voulu le faire, mais la section registration est down pour le moment... Si quelqu'un peu me la proposer autrement, c'est bien volontier. Je pourrais ainsi la tester sous MAP 2011 Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 28 septembre 2012 Auteur Posté(e) le 28 septembre 2012 J'ai modifié le lien dans le premier message pour le rediriger vers ma DropBox, il ne devrait plus y avoir de problème. PS : ce n'est vraiment pas pratique cette limitations des téléchargements sur CADxp... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 28 septembre 2012 Posté(e) le 28 septembre 2012 Le nom de la fonction LISP : gc-getenvvars est dans le premier message.Oui et c'est très bien.Ce que je voulais dire, c'est par exemple dans trois mois que j'utilise ta fonction.Je charge la dll et pas de message; Grumff, quel est déjà le nom de la fonction. Ah oui, c'est sur Cadxp que je l'ai trouvé.Après une recherche incertaine sur cadxp ou google, je trouve enfin le nom de la fonction.Avoues que tu as plus simple en affichant un petit message après le chargement de la dll Mon but était juste de lister toutes (?) les variables d'environnement, ceci étant fait, je laisse chacun utiliser cette liste en LISP selon ses besoins (avec statenv de bonuscad, par exemple).Oui, et c'est très bien.Mais tu as aussi les express qui listent toutes les variables.Comme tu récupères les variables dans les registres, c'était juste pour un outil plus complet.Il pourrait même être payant car je pense qu'il va en intéresser plus d'un, surtout avec une comparaison de variables. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
PHILPHIL Posté(e) le 28 septembre 2012 Posté(e) le 28 septembre 2012 hello un petit truc retrouver les commandes c'est ecrit dans un lispbon ok ca se charge a chaque fois et j'en ai pas l'utilitémais avec des ";;;" devant il se chargera pas mais serat facilement retrouvableavec un ptit "vlide" ;;commande "gc-getenvvars" "(setq lst (gc-getenvvars))" (command "_NETLOAD" "GetEnvVars_19.dll") a+phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
bonuscad Posté(e) le 28 septembre 2012 Posté(e) le 28 septembre 2012 Merci pour la redirection du lien, C'est parfait sous ma version MAP2011, la fonction me retourne 322 variables + 5 concernant un certain Patrick_35 ;) Franchement cela sera utile aux programmeurs qui voudront "traquer" les variables.Du coup on peut même virer les indésirables :(rires forts): :(rires forts): Mais non Patrick_35, je plaisante. Sincère remerciement pour ce partage et à ta vivacité de création. Même pas eu le temps de regarder si je pouvais faire quelque chose de moi-même en simple lisp avec la piste que tu m'avais donné. Mais je pense que le ferais quand même car je n'aime pas être attaché à des problèmes de version de DLL. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
bonuscad Posté(e) le 28 septembre 2012 Posté(e) le 28 septembre 2012 J'ai essayé certaines variables que j'ai donné dans l'autre fil. (la liste provient de Bruno Toniutti depuis une 2004) Et bien beaucoup sont encore valables mais ne figure pas dans ta liste, ce qui me laisse penser que des variables "se planquent" aussi ailleurs que dans la branche de registre indiquée. Aie!!! le registre est grand... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Patrick_35 Posté(e) le 28 septembre 2012 Posté(e) le 28 septembre 2012 + 5 concernant un certain Patrick_35 ;)Mince, je suis grillé :ph34r: :(rires forts): Voila ce que c'est de se servir de lisps qui sont quand même bien utile B) si je pouvais faire quelque chose de moi-même en simple lispTu as des fonctions en vlisp (vl-registry-*) qui le permettent ou encore d'utiliser l'activex WScript.Shell qui permet surement plus de choses, mais que je n'ai jamais approfondis. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 28 septembre 2012 Auteur Posté(e) le 28 septembre 2012 Salut, Patrick_35,Avoues que tu as plus simple en affichant un petit message après le chargement de la dllC'est vrai que je n'ai pas cette habitude, je l'ai très rarement fait pour les LISPs. Mais tu as aussi les express qui listent toutes les variables.À ma connaissance les express lisent les variables système, pas les variables d'environnement. Tu as des fonctions en vlisp (vl-registry-*) qui le permettent ou encore d'utiliser l'activex WScript.Shell qui permet surement plus de choses, mais que je n'ai jamais approfondis.Comme je le disais dans l'autre sujet, la fonction vl-registry-descendents permet de récupérer toutes les sous-clés mais il n'y a pas de fonction pour lister toutes les valeurs d'une clé. J'ai un peu regardé WScript.Shell et n'ai rien trouvé non plus qui corresponde à la méthode .NET RegistryKey.GetValueNames(). bonuscad,J'ai essayé certaines variables que j'ai donné dans l'autre fil. (la liste provient de Bruno Toniutti depuis une 2004) Et bien beaucoup sont encore valables mais ne figure pas dans ta liste, ce qui me laisse penser que des variables "se planquent" aussi ailleurs que dans la branche de registre indiquée. Aie!!! le registre est grand...Merci, je vais essayer de trouver quelle(s) autre(s) clé(s) fouiller. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 28 septembre 2012 Auteur Posté(e) le 28 septembre 2012 Re, Je suis bien embêté, j'ai extrait de la liste de Bruno Toniutti les noms de variable qui ne sont pas dans la liste retournée par gc-getenvvars et qui sont valides avec getenv. Le problème c'est que ces variables ne semblent pas enregistrées dans la base de registre, en tout cas, une recherche ne permet pas de les retrouver... Voici la liste en question :("ActiveAssistance" "AlarmOnError" "AssignInsertUnits" "AuditControlFlags" "AutoSaveFile" "AutoSnapShowAperture" "AutoSnapSize" "AutoSnapTrackPath" "BmpOutCompression" "CheckDrawingSignature" "CmdHistLines" "CommandDialogs" "ContextMenus" "CursorSize" "DatabaseTablesOpenMode" "DefaultPlotToFile" "DemandLoadingModeler" "DigitizerArbitration" "DisableGraphicsTextArea" "DisableScreenMenuArea" "DisableTrueColor" "EdgeMode" "EntityExtentVariant" "ExplorerInsertUnits" "FileDialog" "GripBlock" "GripColor" "GripHot" "Grips" "GripSize" "HideWarningDialogs" "ImageHighlight" "ImportPathInfo" "IsaveBackupDwg" "LayoutRegenControl" "LineWeightDisplayScale" "LoadPaletteBySession" "LogFileOpen" "MaxApp" "MaxArray" "MaxOctTreeNodesToAllocate" "MaxSortEntries" "MenuOptionFlags" "MiddleButtonPan" "MRUFilesToList" "ObjectSnapCursorSize" "OffsetCurveGapType" "OleHide" "OsnapCoord" "PickAdd" "PickAuto" "PickBox" "PickDrag" "PickFirst" "PlineType" "PlotRotationMode" "PlotSpoolerNode" "PostscriptQuality" "PROXYWEBSEARCHNUMBER" "QAFlags" "RasterPreview" "RtDisplay" "ShowHyperlinkCursor" "ShowOleScaleDialog" "ShowPaperBackground" "ShowPaperMargins" "ShowPaperSize" "ShowPrintBorder" "ShowProxyGraphics" "ShowRuler" "SnapType" "SQLIndexInDwg" "StatusLine&CoordinateDisplay" "TextFill" "Trim&ExtendProjectMode" "Trimmode" "UCSAxisAng" "UcsIcon3d" "UcsIconActiveColor" "UcsIconCone" "UcsIconLineWidth" "UcsIconNonActiveColor" "UcsIconSize" "UCSView" "UseContextMenus" "UseMenuHeader" "WhipArcEnable" "WhipThreadEnable" "XFadeCtl" "XrefControlFlags" ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 29 septembre 2012 Posté(e) le 29 septembre 2012 Bonjour, Avec un logiciel de surveillance de registre (regshot) j'en ai pris une au hazard "CmdHistLines" en modifiant dans Autocad avec (setvar "CmdHistLines" "1200") ----------------------------------Valeurs modifiées :1----------------------------------HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\CmdHistLines: 0x000007D0HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\CmdHistLines: 0x000004B0 ----------------------------------Nombre de modifications :1---------------------------------- des que j'ai le temps j'en regarde d'autre https://github.com/Fraiddd
Fraid Posté(e) le 29 septembre 2012 Posté(e) le 29 septembre 2012 en faiten faisant un (mapcar '(lambda (x) (setenv x (getenv x))) ListEnv)----------------------------------Valeurs ajoutées :76----------------------------------HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\AuditControlFlags: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\AutoSnapTrackPath: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\DisableGraphicsTextArea: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\GripBlock: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\GripColor: 0x00000096HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\GripHot: 0x0000000CHKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\Grips: 0x00000002HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\GripSize: 0x00000005HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\MaxOctTreeNodesToAllocate: 0x00989680HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\MenuOptionFlags: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\OffsetCurveGapType: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\OleHide: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\PickAdd: 0x00000002HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\PickAuto: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\PickBox: 0x00000003HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\PickDrag: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\PostscriptQuality: 0x0000004BHKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\SnapType: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\StatusLine&CoordinateDisplay: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\Trim&ExtendProjectMode: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\UCSAxisAng: 0x00000002HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\UcsIcon3d: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\UcsIconActiveColor: 0x00000007HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\UcsIconCone: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\UcsIconLineWidth: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\UcsIconNonActiveColor: 0x000000A0HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\UcsIconSize: 0x00000032HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\UCSView: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\Editor Configuration\XrefControlFlags: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\General\ActiveAssistance: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\General\MaxArray: 0x000186A0HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\General\MRUFilesToList: 0x00000009HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\General Configuration\CommandDialogs: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\General Configuration\PlotRotationMode: 0x00000002HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\FixedProfile\General Configuration\QAFlags: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\CursorSize: 0x00000005HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\DigitizerArbitration: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\DisableTrueColor: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\HideWarningDialogs: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\ShowHyperlinkCursor: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\ShowPaperBackground: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\ShowPaperMargins: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\ShowPaperSize: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\ShowPrintBorder: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\ShowRuler: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Drawing Window\XFadeCtl: 0x00000032HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Editor Configuration\ContextMenus: 0x0000000BHKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Editor Configuration\DisableScreenMenuArea: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Editor Configuration\MiddleButtonPan: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Editor Configuration\OsnapCoord: 0x00000002HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Editor Configuration\PlineType: 0x00000002HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\Editor Configuration\UseContextMenus: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\AssignInsertUnits: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\BmpOutCompression: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\DatabaseTablesOpenMode: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\DemandLoadingModeler: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\EdgeMode: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\ExplorerInsertUnits: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\ImageHighlight: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\ImportPathInfo: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\LineWeightDisplayScale: 0x0000000AHKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\LoadPaletteBySession: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\LogFileOpen: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\MaxApp: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\ShowOleScaleDialog: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\ShowProxyGraphics: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\SQLIndexInDwg: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\Trimmode: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\UseMenuHeader: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General\WhipArcEnable: 0x00000000HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General Configuration\AutoSaveFile: "auto.sv$"HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General Configuration\DefaultPlotToFile: "."HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General Configuration\IsaveBackupDwg: 0x00000001HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General Configuration\PlotSpoolerNode: "ac$"HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General Configuration\PROXYWEBSEARCHNUMBER: 0x00000005HKU\S-1-5-21-117558784-3055084300-3146870412-500\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:40C\Profiles\Fred\General Configuration\RasterPreview: 0x00000001 ----------------------------------Nombre de modifications :76---------------------------------- https://github.com/Fraiddd
(gile) Posté(e) le 29 septembre 2012 Auteur Posté(e) le 29 septembre 2012 Salut, Tim Willey sur TheSwamp m'a orienté vers un autre méthode peut-être plus fiable.Cette méthode utilise un utilitaire : Strings.exe qui permet d'extraire les chaîne Unicode d'un fichier .exe ou .dll.Cet utilitaire s'utilise avec la console (cmd.exe) :- démarrer la console (cmd.exe)- se placer dans le répertoire contenant Strings.execd C:\Strings- lancer Strings.exe sur le fichier acad.exe pour lister les chaînes unicode de plus de 2 caractères en spécifiant une fichier de sortie pour récupérer les résultats (modifier les chemins d'acad.exe et du fichier de sortie selon vos besoins).strings -u -n 2 "c:\program files\autodesk\autocad 2011\acad.exe" > "c:\strings\Strings2011.txt" Pour AutoCAD 2013, il faudra aussi exécuter Strings.exe sur le fichier accore.dll et en ajouter le contenu à celui généré par avec acad.exe. Le fichier ainsi généré peut facilement être traité en LISP (ou avec un autre langage) pour en extraire les variables système ou les variables d'environnement. Concernant ces dernières, le fichier ne récupère que celle définies par AutoCAD. Les variables définies par l'utilisateur avec setenv ainsi que certaines créées par Windows que récupérait la méthode précédente seront absentes. Exemples de traitement en LISP pour générer des fichiers .txt contenant les variables système et d'environnement Code modifié pour supprimer les doublons;; Lister le nom des variables système ou d'environnement AutoCAD ;; ;; Lecture d'un fichier txt généré par l'applicatif Strings.exe ;; http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx. ;; Lancer la console (cmd.exe) et exécuter deuis le répertoire de String.exe : ;; strings -u -n 2 "C:\Program Files\Autodesk\AutoCAD 2011\acad.exe" > StringsA2011.txt ;; le fichier StringsA2011.txt contient toutes les chaînes Unicode contenues dans AutoCAD.exe ;; Variables d'environnement ;; (envvars "C:\\Strings\\Strings2011.txt" "C:\\Strings\\EnvVars2011.txt") (defun envvars (input output / file line lst) (setq file (open input "r")) (while (setq line (read-line file)) (if (and (getenv line) (not (vl-position line lst)) ) (setq lst (cons line lst)) ) ) (close file) (vl-sort lst '(lambda (s1 s2) (< (strcase s1) (strcase s2)))) (setq file (open output "w")) (foreach s lst (write-line s file)) (close file) ) ;; Variables système ;; (sysvars "C:\\Strings\\Strings2011.txt" "C:\\Strings\\SysVars2011.txt") (defun sysvars (input output / file line lst) (setq file (open input "r")) (while (setq line (read-line file)) (setq line (strcase (vl-string-left-trim "*" line))) (if (and (getvar line) (not (vl-position line lst)) ) (setq lst (cons line lst)) ) ) (close file) (vl-sort lst '<) (setq file (open output "w")) (foreach s lst (write-line s file)) (close file) ) VariablesAutoCAD.zip continent les fichiers txt pour les variables système et d'envirnnement des versions 2010 à 2013 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 29 septembre 2012 Posté(e) le 29 septembre 2012 Hello Gilles Waouh ! Impressionnant toutes ces variables systemes et surtout d'environnement ! Je n'ai pas trouve la variable : Max_Evaluation_Days = 30 (par defaut)Je pensais la pousser a 32767 voire plus ... Bon WE, lecrabe Autodesk Expert Elite Team
bonuscad Posté(e) le 1 octobre 2012 Posté(e) le 1 octobre 2012 Dire que j'avais fais ça manuellement (époque de la R14 avec un éditeur héxa) pour trouver les variables cachées dans le AutoCAD.exe Que dire de plus, tout simplement parfait. Pour MAP 2011 j'arrive à 834 variables système (comment voulez vous qu'on s'en sorte avec autant de variables?)et 572 variables d'environnement... Ta méthode avec le registre reste toujours valables pour celle qui seraient définies par l'utilisateur. Avec tout ça on est paré. Merci du temps passé! Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 1 octobre 2012 Auteur Posté(e) le 1 octobre 2012 Les codes LISP donnés ci dessus ne supprimaient pas les doublons, je les ai modifiés. Puisqu'on est dans le forum .NET, je donne les codes équivalent pour les variables d'environnement en C# et F# (tous utilisent la méthode GetEnv définies dans le premier message). C# style impératif classique private void GetEnvVars(string input, string output) { List<string> lines = new List<string>(); using (StreamReader reader = new StreamReader(input)) { string line = reader.ReadLine().Trim(); while (line != null) { if (GetEnv(line) != null && !lines.Contains(line)) lines.Add(line); line = reader.ReadLine().Trim(); } } lines.Sort((l1, l2) => l1.ToUpper().CompareTo(l2.ToUpper())); using (StreamWriter writer = new StreamWriter(output)) { foreach (string line in lines) { writer.WriteLine(line); } } } C# style plus fonctionnel (utilisation de Linq) private void GetEnvVars(string input, string output) { using (StreamReader reader = new StreamReader(input)) using (StreamWriter writer = new StreamWriter(output)) { var lines = reader.ReadToEnd() .Split('\n') .Select(s => s.Trim()) .Distinct() .Where(s => GetEnv(s) != null) .OrderBy(s => s.ToUpper()); foreach (string line in lines) { writer.WriteLine(line); } } } F#let getenvvars (input: string) (output: string) = use reader = new StreamReader(input) use writer = new StreamWriter(output) reader.ReadToEnd().Split('\n') |> Seq.map(fun s -> s.Trim()) |> Seq.distinct |> Seq.filter(fun s -> getEnv(s) <> null) |> Seq.sortBy(fun s -> s.ToUpper()) |> Seq.iter(fun s -> writer.WriteLine(s)) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 1 octobre 2012 Posté(e) le 1 octobre 2012 Merci (gile) Voila un message qui va être dans mes favoris :D @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 1 octobre 2012 Auteur Posté(e) le 1 octobre 2012 À mon avis, le plus simple est d'enregistrer les fichiers concernant la (ou les) version(s) utilisée(s) et de les lire à la demande avec son langage préféré. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 2 octobre 2012 Posté(e) le 2 octobre 2012 Les codes LISP donnés ci dessus ne supprimaient pas les doublons, je les ai modifiés. Une coquille: (getvar line) dans les 2codes au lieu de (getenv line) dans (envvars). Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 2 octobre 2012 Auteur Posté(e) le 2 octobre 2012 Merci, je corrige. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 11 juillet 2014 Posté(e) le 11 juillet 2014 Salut (gile) Je viens de tester (méthode avec strings.exe) pour trouver toutes les variables et je n'ai pas tout.Par exemple, je ne trouve pas AFLAGS dans le fichier des variables système. J'ai aussi regardé la taille de ton fichier pour une 2013 (11446) et le mien pour une 2014 en 64 bits (2321)Surement une DLL à intégrer, mais laquelle ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 16 juillet 2014 Posté(e) le 16 juillet 2014 Pour ceux que cela interesse. Il faut compléter la recherche avec accore.dll et acwindows.dll @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant