Community
AutoCAD Produktfamilie - Deutsch
Das Forum für alle Fragen zu AutoCAD, LT, Architecture, Electrical, Map 3D, Mechanical, MEP, Plant 3D, Raster Design, Web App, sowie Autodesk Civil 3D und Advance Steel.
abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

AutoCAD Programmstart / Ziel - Verzeichnis per vb.net ändern

6 ANTWORTEN 6
GELÖST
Antworten
Nachricht 1 von 7
dirkborowski29
424 Aufrufe, 6 Antworten

AutoCAD Programmstart / Ziel - Verzeichnis per vb.net ändern

Hallo Zusammen,
wie kann man bei den Programm-Eigenschaften per vb.net das Ziel-Verzeichnis ändern bzw. um "/nologo /p "User..."" ergänzen.
Habe die Registrierung einmal durchsucht, aber nichts passendes als Eintrag gefunden welches diesen Ziel-Pfad wiedergibt.

Oder gibt es irgendwo eine Datei, in der diese String enthalten ist und den man ändern könnte?

 

AutoCAD_Ziel_Pfad_01.jpg

6 ANTWORTEN 6
Nachricht 2 von 7
cadffm
als Antwort auf: dirkborowski29

Hi,

 

entweder ich verstehe es nicht, oder aber sehr gut..

 

Ich denke es geht hier nicht um eine AutoCAD-Frage:

Du sprichst doch von eine Verknüpfung, was eine ganze normale (Verknüpfungs)Datei ist *.lnk

Dann steht es in dieser Datei/Eigenschaften und nicht irgendwo in der Registry (daher bin ich etwas verwirrt um was es dir geht)

.NET änden Dateityp lnk -> da sollte sich doch was finden lassen im www ???

In Powershell zB lese ich die Eigenschaft "TargetPath"

das sieht doch ganz gut aus.

 

Ich hoffe du willst den Link im User-Desktop manipulieren und nicht im Program data Verzeichnis,

denn das Profil (sofern du nicht auf eine *.arg verweist) ist ja nur beim jeweiligen User zu finden..

 

Wenn du mich über Sinn und Hintergrund etwas aufklärst, dann helfe ich gerne weiter - soweit es mir möglich ist.

(ich sehe hier noch kein Problem)

 

Suche mal nach
Modify shortcut file (.lnk) target path

 

oder ähnlich

 

- Sebastian -
Nachricht 3 von 7
cadffm
als Antwort auf: dirkborowski29

Ich habe mal nachgesehen wie ich es hinbekommen würde mit Lisp

(da muß ich dann leider den Umweg über wshscript gehen).

 

Gesucht ist nicht der TargetPath, sondern Arguments

du müßtest demnach so suchen:

https://www.google.com/search?client=firefox-b-d&q=.net+edit+lnk+Arguments

 


(defun _GetShortCutProp ( shortCutPath Prop / shell sc result )

    ;;  If the shortcut exists the target path is returned
    ;;  (though said path is not validated).

    (vl-catch-all-apply
       '(lambda ( )
            (setq
                shell  (vlax-create-object "WScript.Shell")
                sc     (vlax-invoke shell 'CreateShortcut shortCutPath)
                result (vlax-get sc Prop)
            )
        )
    )
    
    (if (eq 'vla-object (type sc)) (vlax-release-object sc))    
    (if (eq 'vla-object (type shell)) (vlax-release-object shell))
    
    result

)

(defun _SetShortCutProp ( shortCutPath Prop Val / shell sc result )

    ;;  If the shortcut exists the target path is returned
    ;;  (though said path is not validated).

    (vl-catch-all-apply
       '(lambda ( )
            (setq
                shell  (vlax-create-object "WScript.Shell")
                sc     (vlax-invoke shell 'CreateShortcut shortCutPath)
                result (vlax-put sc Prop Val)
            )
	    (vlax-invoke sc 'save)
        )
    )
    
    (if (eq 'vla-object (type sc)) (vlax-release-object sc))    
    (if (eq 'vla-object (type shell)) (vlax-release-object shell))
    
    result

)
_

Thx @puckett, michael / MP for the base code - I wish you a good recovery 


<nicht durch die besonders formatierte Rückgabe wundern, ein Backslash quotet Backslashs und Anführungszeichen in AutoLisp>

<nicht durch die besonders formatierte Rückgabe wundern, ein Backslash quotet Backslashs und Anführungszeichen in AutoLisp>

(_GetShortCutProp "D:\\aaa.lnk" 'TargetPath)
= "C:\\Program Files\\Autodesk\\AutoCAD 2021\\acad.exe"

(_GetShortCutProp "D:\\aaa.lnk" 'Arguments)
= " /product ACAD /language \"de-DE\"" 


und setzen - Beispiel ohne Prüfung ob ein anderes Profil als Startparameter existiert
(_SetShortCutProp "D:\\aaa.lnk" 'Arguments " /product ACAD /p \"PowerUSerProfile\" /language \"de-DE\"")
= " /product ACAD /p \"PowerUSerProfile\" /language \"de-DE\"" 


 

- Sebastian -
Nachricht 4 von 7
dirkborowski29
als Antwort auf: cadffm

Hallo!

 

Danke für die Infos bzw. für deine Unterstützung.

Bzgl. der Arguments werde ich mal sehen, wie ich das in meinem VB.Net Programm einbauen kann.

 

Hintergrund ist, dass ich bestimmte Usereinstellungen einer AutoCAD Installation automatisieren möchte,

so dass die Namensgebungen für *.args und/oder *.cuix Dateien nach einem einheitlichen Schema geschehen.

 

Anschließend soll der Profilname (*.arg) eben mit in diese Zeile aufgenommen werden.

Arguments (Ziel) "C:\Program Files\Autodesk\AutoCAD 2021\acad.exe" /product ACAD /language "de-DE" /p PROFILNAME

 

Gruß

 

Dirk

 

 

Nachricht 5 von 7
cadffm
als Antwort auf: dirkborowski29

Installation deines Programmes, nicht das von Autocad? Okay.

Ansonsten wäre es ja einfacher die Installation schon gewünscht durchzuführen und nicht hinterher eine Standardinstallation umzubiegen.

 

Zudem hat der User ja die Möglichkeit alles zu ändern,

das Profil als Meine.ARG wird nur importiert wenn es noch kein gleichnamiges Profil gibt, also nur beim ersten Mal

und Acad kann auch auf anderem Weg gestartet werden, so würde das letzte aktive Profil genommen werden.

 

-

 

Du wirst das mit der lnk Datei/Link Anpassung hinbekommen, ganz sicher.

 

Halt uns auf dem Laufenden 🙂

 

- Sebastian -
Nachricht 6 von 7
dirkborowski29
als Antwort auf: cadffm

Hallo und guten Morgen,

 

so, bin um einiges weitergekommen.

Liegt die entsprechende *.lnk Datei unter C:\Users\%user%\Desktop in diesem Fall meine 

Test AutoCAD 2021 - Deutsch (German).lnk, so funktioniert es.

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
	'//;;
	Dim NewArg01 As String = " /product ACAD /language " & """de-DE""" & " /p " & "profilname"
	Dim NewArg02 As String = " /product ACAD /language " & """de-DE""" & "/nologo"
	'//;;
	Dim shell As New IWshShell_Class()
	Dim path As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test AutoCAD 2021 - Deutsch (German).lnk")
	'//;;
	MsgBox(path)
	'//;;
	Dim sC As IWshShortcut = DirectCast(shell.CreateShortcut(path), IWshShortcut)
	'//;;
	MsgBox(sC.Arguments)
	'//;;
	sC.Arguments = NewArg01
	sC.Save()
	'//;;
	MsgBox(sC.Arguments)
	'//;;
End Sub

 

Die Original AutoCAD 2021 - Deutsch (German).lnk liegt aber im Verzeichnis C:\Users\Public\Desktop.

Hier bekomme ich eine Fehlermeldung, siehe weiter unten.

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
	'//;;
	Dim pathx As String = Nothing
	Dim pathxx As String = Nothing
	'//;;
	For Each fi As String In My.Computer.FileSystem.GetFiles("C:\Users\Public\Desktop", FileIO.SearchOption.SearchTopLevelOnly, "*.lnk")
		pathx = fi.Substring(fi.LastIndexOf("\") + 1)
		If pathx.StartsWith("AutoCAD " & "2021") = True Then
			pathxx = pathx
		End If
	Next
	'//;;
	MsgBox(pathxx)
	'//;;
	Dim NewArg01 As String = " /product ACAD /language " & """de-DE""" & " /p " & "profilname"
	Dim NewArg02 As String = " /product ACAD /language " & """de-DE""" & "/nologo"
	'//;;
	Dim shell As New IWshShell_Class()
	Dim path As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory), pathxx)
	'//;;
	MsgBox(path)
	'//;;
	Dim sC As IWshShortcut = DirectCast(shell.CreateShortcut(path), IWshShortcut)
	'//;;
	MsgBox(sC.Arguments)
	'//;;
	sC.Arguments = NewArg01
	sC.Save()
	'//;;
	MsgBox(sC.Arguments)
	'//;;
	        Catch ex As System.Exception
            MsgBox("ACHTUNG!" & vbCrLf & ex.Message, vbCritical)
            Return
        End Try
        '//;;
End Sub

AutoCAD_Ziel_Pfad_02.jpg

Kann man das irgendwie umgehen?

 

Gruß

 

Dirk

Nachricht 7 von 7
cadffm
als Antwort auf: dirkborowski29

Sorry,

 

ich habe von alle dem keine Ahnung 🙂

und bezüglich der Rechte in Windows, zusätzlich noch im Thema Programmierung.. erst recht nicht.

 

Da es kein AutoCAD-Thema ist, empfehle ich "irgendein" .Net Forum.

Oder in englisch auch das .Net Forum hier auf autodesk.com

 

Jetzt wo du sagst das dieser Link bearbeitet werden soll, schaue ich aber mit noch höher gerissener Augenbraue

auf das ganze (mit dem Gedanken ob dein Weg denn wirklich so sinnvoll ist).

Leider muß ich hier aber aussteigen.

Ich wünsche dir eine schnelle Lösung

 

Gruß Sebastian, der einfach ein Einrichtung erstellt und so alles vorbereitet ie gewünscht installiert,

dazu noch eine Datei welche immer geladen wird um eigene Progammerweiterungen/Änderungen einzuleiten,

fertig.

 

 

- Sebastian -

Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.

In Foren veröffentlichen  

Autodesk Design & Make Report