Hallo AutoLISP-Gemeinde!
Falls es das hier schon gibt, dann bitte nicht schlagen. Wäre dann interessant, wie es andere gemacht haben.
Ich habe jedenfalls einmal ein kleines AutoLISP-Proggi begonnen (mit OpenDCL), das die AutoCAD-System-Einstellungen (für das aktuelle Profil) danach analysiert, was automatisch beim AutoCAD Startup alles mitgestartet wird. Das Ergebnis wird in einem Fenster angezeigt. In einem weiteren Schritt soll auch ein Export in eine Textdatei möglich sein.
Ich stelle das erste Ergebnis hiermit als BTNware (Better Than Nothing - Benützung auf eigene Gefahr) der Öffentlichkeit zur Verfügung. Es darf kostenlos verwendet und weiterentwickelt werden. Das Einzige: Solange der ursprüngliche Source-Code zum größten Teil weiterverwendet wird, möchte ich als Copyright-Halter im Source-Code weiter aufscheinen. Danke.
Nun noch einige Fragen an alle Interessierten:
Habe ich irgentwelche Quellen übersehen, die AutoCAD beim Startup auch noch absucht um dann eventuell Programme mitzustarten?
Ist es überhaupt für den einen oder anderen nützlich? Falls nein, dann werde ich wohl nicht mehr viel mehr Zeit investieren. Falls aber ja, dann gibt mir ein positives Feedback natürlich extra Motivation, das Proggi weiter zu verbessern.
Hat jemand eine Idee, wie man das Programm noch verbessern kann? Wenn ja, welche?
EDIT: Habe nun die Export-Funktion noch eingebaut.
Hier nun (zusätzlich zum Anhang) der (neue) Source-Code:
Code:
(defun c:StartupAnalyzer (/ STB_closeForm c:guiStartupAnalyzer_mainDialog_OnCancel c:guiStartupAnalyzer_mainDialog_OnInitialize
c:guiStartupAnalyzer_mainDialog_OnOK c:guiStartupAnalyzer_mainDialog_btnClose_OnClicked
c:guiStartupAnalyzer_mainDialog_btnExport_OnClicked
projectName)
(vl-load-com)
; *** tests for requirements ***
(if(not(member "OpenDCL" (vl-registry-descendents (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\Applications"))))
(progn
(alert "Startup Analyzer:\n\nThe OpenDCL-Runtime environment is not installed. Please install the version 6.0.0.27 or higher.\n-> EXIT")
(exit)
)
; else:
(progn
(command "_OPENDCL") ; Load OpenDCL Runtime
(if(or(<(dcl_getversion) 6.0) ; (and(=(dcl_getversion) 6.0) (<(atoi(substr(vl-filename-extension(vl-filename-base(dcl_getversionex))) 2)) 0))
(and(=(dcl_getversion) 6.0) (=(atoi(substr(vl-filename-extension(vl-filename-base(dcl_getversionex))) 2)) 0)
(<(atoi(substr(vl-filename-extension(dcl_getversionex)) 2)) 27)
) ; and
) ; or
(progn
(alert "Startup Analyzer:\n\nThe installed OpenDCL-Runtime environment is a version less than 6.0.0.27. Please install the version 6.0.0.27 or higher.\n-> EXIT")
(exit)
)
) ; if
)
) ; if
; *** setup of variables and functions
(setq projectName "guiStartupAnalyzer")
(defun STB_DateTimeString(/ cd)
(setq cd(rtos(getvar "cdate")2 6))
(if(= 14(strlen cd)) (setq cd(strcat cd "0")))
(strcat
(substr cd 1 4)
(substr cd 5 2)
(substr cd 7 2)
"-"
(substr cd 10 2)
"-"
(substr cd 12 2)
"-"
(substr cd 14 2)
)
) ; DateTimeString
(defun STB_closeForm ()
(dcl_Form_Close(eval(read(strcat projectName "_mainDialog"))))
)
(defun c:guiStartupAnalyzer_mainDialog_OnCancel (/)
(STB_closeForm)
)
(defun c:guiStartupAnalyzer_mainDialog_OnOK (/)
(STB_closeForm)
)
(defun c:guiStartupAnalyzer_mainDialog_OnInitialize (/ textToDisplay hkeyBase NumStartup i file lineOfText mnlfile)
; *** startup suite ***
(setq textToDisplay "Defined in the Startup-Suite (Command \"Appload\"):"
hkeyBase(strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\PROFILES\\"
(vla-get-ActiveProfile(vla-get-PROFILES(vla-get-preferences(vlax-get-acad-object))))
)
NumStartup(atoi(VL-REGISTRY-READ(strcat hkeyBase "\\Dialogs\\Appload\\Startup") "NumStartup"))
i 1
) ; setq
(if(= 0 NumStartup)
(setq textToDisplay(strcat textToDisplay "\r\n There is nothing in the startup suite."))
; else:
(while(<= i NumStartup)
(setq textToDisplay(strcat textToDisplay "\r\n " (VL-REGISTRY-READ(strcat hkeyBase "\\Dialogs\\Appload\\Startup") (strcat(itoa i)"Startup"))))
(setq i(1+ i))
) ; while
) ; if
; *** other registry data ***
(setq textToDisplay(strcat textToDisplay "\r\n\r\nDefined in other parts of the registry (Key \"Applications\"):")
hkeyBase(strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\Applications")
i 0
) ; setq
(foreach element(vl-registry-descendents hkeyBase)
(if(= 2(boole 1 2(vl-registry-read(strcat hkeyBase "\\" element) "LOADCTRLS")))
(progn
(setq textToDisplay(strcat textToDisplay "\r\n " (vl-registry-read(strcat hkeyBase "\\" element) "LOADER"))
i(1+ i)
)
)
) ; if
) ; foreach
(if(= i 0) (setq textToDisplay(strcat textToDisplay "\r\n No applications are registered for loading upon AutoCAD startup.")))
; *** different individual files ***
(foreach filename '("acad.lsp" "acaddoc.lsp" "acad.rx" "acad.dvb" "acad.ads")
(setq textToDisplay(strcat textToDisplay "\r\n\r\n" filename ":"))
(if(and(findfile filename) (setq file(open(findfile filename) "r")))
(progn
(while(setq lineOfText(read-line file))
(setq textToDisplay(strcat textToDisplay "\r\n " lineOfText))
) ; while
(close file)
)
; else:
(setq textToDisplay(strcat textToDisplay "\r\n The file has not been found."))
) ; if
) ; foreach
; *** .mnl-files ***
(setq textToDisplay(strcat textToDisplay "\r\n\r\nTHE LAST SECTION SHOWS THE .MNL-FILES THAT WERE FOUND:"))
(if(not(findfile(strcat(getvar "MENUNAME") ".mnl")))
(setq textToDisplay(strcat textToDisplay "\r\nThe .mnl-file \"" (VL-FILENAME-BASE(getvar "MENUNAME")) ".mnl\" (belonging to the main .cui(x)-file \""
(VL-FILENAME-BASE(getvar "MENUNAME")) ".cui(x)\") has not been found.")
)
; else:
(progn
(setq textToDisplay(strcat textToDisplay "\r\n" (VL-FILENAME-BASE(getvar "MENUNAME")) ".mnl (belonging to the main .cui(x)-file \""
(VL-FILENAME-BASE(getvar "MENUNAME")) ".cui(x)\"):"))
(if(not(setq file(open(strcat(getvar "MENUNAME") ".mnl") "r")))
(setq textToDisplay(strcat textToDisplay "\r\n The file \"" (VL-FILENAME-BASE(getvar "MENUNAME")) ".mnl\" could not be read."))
; else:
(progn
(while(setq lineOfText(read-line file))
(setq textToDisplay(strcat textToDisplay "\r\n " lineOfText))
) ; while
(close file)
)
) ; if
)
) ; if
(vlax-for element(vla-get-menugroups(vlax-get-acad-object))
(if(and(/=(strcat(VL-FILENAME-directory(vla-get-menufilename element)) "\\" (VL-FILENAME-BASE(vla-get-menufilename element))) (getvar "MENUNAME"))
(setq mnlfile(findfile(strcat(vl-filename-directory(vla-get-menufilename element)) "\\" (vl-filename-base(vla-get-menufilename element)) ".mnl")))
) ; and
(progn
(setq textToDisplay(strcat textToDisplay "\r\n\r\n" (vl-filename-base mnlfile) ".mnl:"))
(if(not(setq file(open mnlfile "r")))
(setq textToDisplay(strcat textToDisplay "\r\n The file \"" (vl-filename-base mnlfile) ".mnl\" could not be opened."))
; else:
(progn
(while(setq lineOfText(read-line file))
(setq textToDisplay(strcat textToDisplay "\r\n " lineOfText))
)
(close file)
)
) ; if
)
) ; if
) ; vlax-for
(dcl_Control_SetText (eval(read(strcat projectName "_mainDialog_txt1"))) textToDisplay)
) ; c:guiStartupAnalyzer_mainDialog_OnInitialize
(defun c:guiStartupAnalyzer_mainDialog_btnClose_OnClicked (/)
(STB_closeForm)
)
(defun c:guiStartupAnalyzer_mainDialog_btnExport_OnClicked (/ filenameToSaveTo file i)
(if(setq filenameToSaveTo(getfiled "STB Startup Analyzer - Choose Filename for Export"
(strcat "STB Startup Analyzer - " (if(="Visual LISP"(substr(ver)1 11)) "AutoCAD" "CAD") "-Profile "
(vla-get-ActiveProfile(vla-get-PROFILES(vla-get-preferences(vlax-get-acad-object))))
" - " (STB_DateTimeString) ".txt"
)
"" 5)
) ; setq
(progn
(if(setq file(open filenameToSaveTo "w"))
(progn
(foreach element (VL-STRING->LIST(dcl_TextBox_GetLine (eval(read(strcat projectName "_mainDialog_txt1"))) 0)) (write-char element file))
(setq i 1)
(repeat(1-(dcl_TextBox_GetLineCount (eval(read(strcat projectName "_mainDialog_txt1")))))
(write-char(ascii "\n") file)
(foreach element (VL-STRING->LIST(dcl_TextBox_GetLine (eval(read(strcat projectName "_mainDialog_txt1"))) i)) (write-char element file))
(setq i(1+ i))
) ; repeat
(close file)
(dcl_MessageBox "Export finished." "STB Startup Analyzer - Export")
)
; else:
(dcl_MessageBox "ERROR: The file which to export to could not be opened." "STB Startup Analyzer - Export")
) ; if
)
) ; if
) ; c:guiStartupAnalyzer_mainDialog_btnExport_OnClicked
; *** START ***
(if(dcl_Project_Import '("YWt6A8oOAAB2msgEBuKTKDUxLT9qgFDoTEKqNkqQcjh63Crf0wSVvDq7+8LUPJy4+iZ0Jlf7VlbE"
"H9f3BUmEdfKxektf0Ard93UBfnXpWPwQ8k9A1pmyE0UJMC8+Va+6Ba0fwEcNIE2ZRemLp/tSDMGk"
"XzJe+2DynUqwr0b/T2I6+C5k6Q5nfcqUfgYrfyqsISjUMVz4aMZaov0o5PkW8h5hw186F8t7d+TH"
"Glo0EfYIWzbI6Zg3+hdo24NQF5ZezOC7AHKs8AAEHSRZNE3pSgdoWDXQyLbVfUodcdAgYVpirwgd"
"ymw+S2Wb9tVGpLMucLTuBTYqSzxEVzTO8zgwDGo9LqFushMPFjEtQYgdR3mt+bvSi18wVfl3GQrK"
"F9bl6APWdWgQUvNBOJkX4QT0jMILYKrSjgCvvLPbjgDqAFesjagtJD17Y6WRabURA1eCuK9/S1eM"
"BfCkgvOZ0CDj3rSO4/fkjPD44Ukq/9SonnFKLfFzqIRxewBajsq+IfvBVda2nVKFpRhrm7hgipxu"
"lLo/qmtj+wQflz9LZ8ExNtz14XE9aYF/J4L/DzLskyjWDA9LCbpvoGsG477Muqz7AkNCUo42XzCZ"
"XZlBVJoZezB2ASl7QFeO/r6pesBfjlf/mXWZmp97bfHAwQlcwMe8AwTGIJbBSYcUh56sWyR46yEs"
"xTuHyoLGAkGND3h0qZ+3nThgGAKhlhWFcXrQbIhJZgVi6rQmGyqtO/u0uwQ4CclKs6UW2kBEHYKw"
"DSLQzpXdp3KtksT2HdmP1Y9YzSG5D7KeF/Q2S3Wk+3qgX4JBbYDw5YOyZsur2DVRm7n6L8WywDEt"
"ypHT3p8IbxnJvw3iGfm/RPAwbxnp7sl1BzKaX6U+3e6FpLzTAiUmPd7kKeQbJdYyLvBnYt8iudbJ"
"DIUvSyi/OADJKWkFTiHTagNb+TdFJ6LokB8bE5SIVMlXpxiACmUn3BO6O0d50xXQFs7RBtszH8cz"
"vjmMU8430JOGNoOkzzdDdeXq7YZHpyBESKfkHu0zma9XtqtbmpM8cJnpt+j68RIVB9v2ErTd/JGh"
"S+UUn6wus6aBMcqrWCTOvwHDAX+zxLUS5BvOtsmRYd1nQaF/fDqNpA=="))
(dcl_Form_Show(eval(read(strcat projectName "_mainDialog"))))
)
(princ)
) ; c:StartupAnalyzer
(princ "\n\nSTB Startup Analyzer\ncopyright June 2010 by Stephan Bartl (www.stbartl.at)\nStart with: \"STARTUPANALYZER\"")
------------------
Gruß, Stephan
www.stbartl.at
"Every thing should be made as simple as possible but not simpler." - Albert Einstein
[Diese Nachricht wurde von autocart am 07. Jun. 2010 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP