Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  eigene Buttons wieder aus Menü löschen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  eigene Buttons wieder aus Menü löschen (849 mal gelesen)
BernhardU
Mitglied
Techniker / Konstrukteur / Student


Sehen Sie sich das Profil von BernhardU an!   Senden Sie eine Private Message an BernhardU  Schreiben Sie einen Gästebucheintrag für BernhardU

Beiträge: 328
Registriert: 17.08.2005

Windows XP SP3
AIP 2011
VS 2005

erstellt am: 20. Jun. 2007 11:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen!

Habe ein kleines Probelm!

Habe meine Buttons auch im Baugruppen Menü Hinterlegt! Soweit so gut!

Jedoch beim löschen da habe ich probleme!

Wenn ich nur die Buttondefinition lösche bleibt dann da komische symbol (Wenn der Button nicht geladen werden kann) im Buagruppenmenü!

Code:
  ExplButton.Delete()

Und wenn ich in der Symbolleiste den button aufrufen möchte bekomme ich eine Fehlermeldung

Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG))

Code:
  For i As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Count
                If oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "PartMenuBar" Then
                    For x As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Count
                        If oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Arbeitsverzeichnis" Then
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete()
                        ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Einstellungen" Then
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete()
                        ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Normteile" Then
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete()
                        End If
                    Next
                ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "AssemblyMenuBar" Then
                    For x As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Count
                        If oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Arbeitsverzeichnis" Then
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete()
                        ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Einstellungen" Then
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete()
                        ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Normteile" Then
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete()
                        End If
                    Next
                ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "DrawingMangerMenuBar" Then
                    For x As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Count
                        If oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Arbeitsverzeichnis" Then
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete()
                        ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Einstellungen" Then
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete()
                        ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Normteile" Then
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete()
                        End If
                    Next

                End If
            Next


Ich habe herausgefunden, dass die eingefügeten Buttons nur als Text in der Registry stehen!

Wie lösche ich jetzt jedoch die Buttons Richtig!

Vielen Dank!!

mfg Bernhard

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 20. Jun. 2007 15:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BernhardU 10 Unities + Antwort hilfreich

Hallo Bernhard,

ich kann mir vorstellen, dass du den Button schon gelöscht hast, jedoch ist Inventor nicht so clever um die Toolbar zu aktualisieren. Ob ich Recht habe oder nicht, findest du heraus, indem du deinen Code durch die If FirstTime laufen lässt. Das könntest du z.B. in DebugModus machen, oder eben bevor du den Inventor startest, lösche deine GUID aus z.B.:

HKEY_CURRENT_USER\Software\Autodesk\Inventor\RegistryVersion12.0\UI Customization V5\Command Owner IDs

Das bewirkt, dass die FirstTime auf false gesetzt wird, und die If, wo die Toolbar eigentlich gebildet wird, durchläuft. Wenn dann dein gelöschter Button nicht mehr in der Leiste ist, dann weißt du was los ist.

------------------
Grüße Igor

FX64 Software Solutions
Data Management Konferenz 2007 (26. - 27. Juni 2007)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BernhardU
Mitglied
Techniker / Konstrukteur / Student


Sehen Sie sich das Profil von BernhardU an!   Senden Sie eine Private Message an BernhardU  Schreiben Sie einen Gästebucheintrag für BernhardU

Beiträge: 328
Registriert: 17.08.2005

Windows XP SP3
AIP 2011
VS 2005

erstellt am: 21. Jun. 2007 15:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Igor! Derzeit  ist das unter FirstTime

Code:

If FirstTime = True Then

                    'WriteKey(My.Settings.INI, "ALLG", "Normteile", "")
                    SaveKey("SMC IV AddIn 3.0 ALLG", "NORMTEILE", "")
                    SaveKey("SMC IV AddIn 3.0 ALLG", "ERRORLOGFILE", My.Settings.ERRORLOGFILE)

                    For i As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Count
                        If oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "PartMenuBar" Then

                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(ExplButton)
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(SettingsButton)
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(NormteileButoon)

                        ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "AssemblyMenuBar" Then

                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(ExplButton)
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(SettingsButton)
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(NormteileButoon)

                        ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "DrawingMangerMenuBar" Then

                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(ExplButton)
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(SettingsButton)
                            oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(NormteileButoon)

                        End If
                    Next

end if


Wenn ich IV zum ersten Mal starte ist alles OK (Firsttime = true) ab dann Würden immer Buttons hinzugefügt werden -> ohne dass Fisrt Start True ist?

Desshalb durchlaufe ich eine Schleife zum Löschen der Buttons beim Deactivate event und verwende einfach einen Errorhandler, da ich meist diese Fehlermeldung bekomme: Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG))

Dann funktioniert es immer richtig!? Nur ich glaube nicht, dass das die beste Lösung ist!

Vielen Dank!!

mfg Bernhard

[Diese Nachricht wurde von BernhardU am 21. Jun. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 21. Jun. 2007 16:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BernhardU 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von BernhardU:
...Nur ich glaube nicht, dass das die beste Lösung ist!...

Deine Vermutung ist wohl richtig 

Wenn die Buttons immer hinzugefügt werden, dann liegt es an der FirstTime die in dem Fall immer auf True ist. Die FirstTime ist auf True wenn dein AddIn in:

HKEY_CURRENT_USER\Software\Autodesk\Inventor\RegistryVersion12.0\UI Customization V5\Command Owner IDs

nicht aufgelistet ist, und die CLSID deines AddIns wird in dem Key nicht geschrieben solange dein AddIn nicht richtig registriert ist. Also ist da wohl die Ursache deines Problems. Und da dein Activate Teil ein reines Workaround ist, lohnt sich da nicht nach Fehlersuche zu gehen, denn es wäre wieder nur ein weiterer Workaround für dein Workaround und das hat irgendwann mal keinen Sinn mehr. Du musst schauen dass du dein AddIn richtig registrierst, so dass die FirstTime richtig arbeitet (nur beim ersten Mal durchläuft), und dann hast wahrscheinlich auch keine Probleme mehr mit den Buttons. Ich habe in dem ersten Post einfach mal Inventor beschuldigt, aber es ist möglich, dass es nur an deinem Code liegt.

------------------
Grüße Igor

FX64 Software Solutions
Data Management Konferenz 2007 (26. - 27. Juni 2007)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BernhardU
Mitglied
Techniker / Konstrukteur / Student


Sehen Sie sich das Profil von BernhardU an!   Senden Sie eine Private Message an BernhardU  Schreiben Sie einen Gästebucheintrag für BernhardU

Beiträge: 328
Registriert: 17.08.2005

Windows XP SP3
AIP 2011
VS 2005

erstellt am: 22. Jun. 2007 09:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Igor die Registry Einträge sind alle Vorhanden!
Jedoch FirstTime bleit immer auf 1!
Anscheinend ein Fehler beim Installieren oder sonst wo!!

Mal schauen!

Ist nur komisch! Da ich jetzt beim kontrollieren der Registry Eintröge keinen Fehler gefunden!!

Nadann mal schauen woran es liegt!!

Vielen Dank

MfG

Bernhard

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz