none
ajouter un élément dans menu contextuel RRS feed

  • Question

  • Je suis  entrain d’ajouter des compléments  dans Word et je ne trouve pas comment ajouter un élément dans son  menu contextuel.

    Je travaille sur Visual studio 2008 et Office 2007

    mardi 26 janvier 2010 16:54

Réponses

  • Bonjour djebbi,

    Le lien numero 1 traite pourtant exclusivement de cela.
    http://blogs.msdn.com/vsto/archive/2009/03/06/my-word-add-in-creates-duplicate-menu-items-make-it-stop-norm-estabrook.aspx

    C'est un problème couramment rencontré.

    Dans sa source, il écrit les fonctions RemoveExistingMenuItem et AddMenuItem afin de gérer ce problème.

    Public Class ThisAddIn
        Private MyApplication As Word.Application
        Private WithEvents myControl As Office.CommandBarButton
        Private customTemplate As Word.Template
        Private Sub ThisAddIn_Startup _
        (ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
            MyApplication = Me.Application
            GetCustomTemplate()
            RemoveExistingMenuItem()
            AddMenuItem()
        End Sub
        Private Sub GetCustomTemplate()
            Dim TemplatePath As String = Environment.GetFolderPath _
                (Environment.SpecialFolder.MyDocuments) + "\MyCustomTemplate.dotx"
            Dim install As Boolean = True
            For Each installedTemplate As Word.Template In MyApplication.Templates
                If installedTemplate.FullName = DirectCast(TemplatePath, String) Then
                    install = False
                End If
            Next
            If install = True Then
                MyApplication.AddIns.Add(TemplatePath.ToString(), True)
            End If
            customTemplate = MyApplication.Templates(TemplatePath)
        End Sub
        Private Sub RemoveExistingMenuItem()
            Dim contextMenu As Office.CommandBar = _
            MyApplication.CommandBars("Text")
            MyApplication.CustomizationContext = customTemplate
            Dim control As Office.CommandBarButton = contextMenu.FindControl _
                (Office.MsoControlType.msoControlButton, System.Type.Missing, _
                 "MyMenuItem", True, True)
            If Not (control Is Nothing) Then
                control.Delete(True)
            End If
        End Sub
    
        Private Sub AddMenuItem()
            MyApplication.CustomizationContext = customTemplate
            Dim menuItem As Office.MsoControlType = _
                Office.MsoControlType.msoControlButton
            myControl = CType(MyApplication.CommandBars("Text").Controls.Add _
               (menuItem, 1, True), Office.CommandBarButton)
            myControl.Style = Office.MsoButtonStyle.msoButtonCaption
            myControl.Caption = "My Menu Item"
            myControl.Tag = "MyMenuItem"
            customTemplate.Saved = True
            GC.Collect()
        End Sub
        Sub myControl_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, _
                            ByRef CancelDefault As Boolean) Handles myControl.Click
            System.Windows.Forms.MessageBox.Show("My Menu Item clicked")
        End Sub
        Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
        End Sub
    End Class

    En espérant que cela t'aide.

    Cordialement,

    Thomas



    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse djebbi_virus jeudi 28 janvier 2010 09:00
    mercredi 27 janvier 2010 16:59
  • Bonjour,

    Voici des articles qui pourront t'aider à gérer les menus contextuels dans un add-in Word.
    Le 1er contient du code qui permet justement de mettre une entrée supplémentaire dans le menu contextuel de Word 2007.
    Les 2 autres contiennent soit des problématiques que tu risques de rencontrer soit rentrent plus dans les détails.

    http://blogs.msdn.com/vsto/archive/2009/03/06/my-word-add-in-creates-duplicate-menu-items-make-it-stop-norm-estabrook.aspx
    http://stackoverflow.com/questions/684438/ms-word-plugin-adding-a-button-which-pops-up-on-right-click-on-selected-text
    http://social.msdn.microsoft.com/forums/en-US/vsto/thread/62240ece-ab2d-4f28-b317-e6bd76f34000

    Cordialement,

    Thomas
    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse djebbi_virus mercredi 27 janvier 2010 10:54
    mardi 26 janvier 2010 17:18
  • merciiiiiiiiiiiiiiiiiiiiiiii Thomas sa je trouve un solution merciiiiiiiiiiiiiiiiiiiiiiiii
    cordialement.

    • Marqué comme réponse djebbi_virus jeudi 28 janvier 2010 16:24
    jeudi 28 janvier 2010 16:24

Toutes les réponses

  • Bonjour,

    Voici des articles qui pourront t'aider à gérer les menus contextuels dans un add-in Word.
    Le 1er contient du code qui permet justement de mettre une entrée supplémentaire dans le menu contextuel de Word 2007.
    Les 2 autres contiennent soit des problématiques que tu risques de rencontrer soit rentrent plus dans les détails.

    http://blogs.msdn.com/vsto/archive/2009/03/06/my-word-add-in-creates-duplicate-menu-items-make-it-stop-norm-estabrook.aspx
    http://stackoverflow.com/questions/684438/ms-word-plugin-adding-a-button-which-pops-up-on-right-click-on-selected-text
    http://social.msdn.microsoft.com/forums/en-US/vsto/thread/62240ece-ab2d-4f28-b317-e6bd76f34000

    Cordialement,

    Thomas
    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse djebbi_virus mercredi 27 janvier 2010 10:54
    mardi 26 janvier 2010 17:18
  • il y  a un problème ... comment supprimer les élément ajoute !!!
    mercredi 27 janvier 2010 11:50
  • Bonjour djebbi,

    Dans le 3eme lien, ils en parlent justement.
    Tu peux faire un Reset.

    Cordialement,

    Thomas
    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    mercredi 27 janvier 2010 11:57
  • dslllll mais je trouve pas de solution .

    et je trouve un grand problème : lorsque j'ajoute n'importe quelle complément a chaque fois je lancer le Word le complément ajouter un autre fois par exemple lorsque je lancer Word 3 fois je trouve 3 bouton ajouter dans le complément.
      
    mercredi 27 janvier 2010 16:10
  • Bonjour djebbi,

    Le lien numero 1 traite pourtant exclusivement de cela.
    http://blogs.msdn.com/vsto/archive/2009/03/06/my-word-add-in-creates-duplicate-menu-items-make-it-stop-norm-estabrook.aspx

    C'est un problème couramment rencontré.

    Dans sa source, il écrit les fonctions RemoveExistingMenuItem et AddMenuItem afin de gérer ce problème.

    Public Class ThisAddIn
        Private MyApplication As Word.Application
        Private WithEvents myControl As Office.CommandBarButton
        Private customTemplate As Word.Template
        Private Sub ThisAddIn_Startup _
        (ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
            MyApplication = Me.Application
            GetCustomTemplate()
            RemoveExistingMenuItem()
            AddMenuItem()
        End Sub
        Private Sub GetCustomTemplate()
            Dim TemplatePath As String = Environment.GetFolderPath _
                (Environment.SpecialFolder.MyDocuments) + "\MyCustomTemplate.dotx"
            Dim install As Boolean = True
            For Each installedTemplate As Word.Template In MyApplication.Templates
                If installedTemplate.FullName = DirectCast(TemplatePath, String) Then
                    install = False
                End If
            Next
            If install = True Then
                MyApplication.AddIns.Add(TemplatePath.ToString(), True)
            End If
            customTemplate = MyApplication.Templates(TemplatePath)
        End Sub
        Private Sub RemoveExistingMenuItem()
            Dim contextMenu As Office.CommandBar = _
            MyApplication.CommandBars("Text")
            MyApplication.CustomizationContext = customTemplate
            Dim control As Office.CommandBarButton = contextMenu.FindControl _
                (Office.MsoControlType.msoControlButton, System.Type.Missing, _
                 "MyMenuItem", True, True)
            If Not (control Is Nothing) Then
                control.Delete(True)
            End If
        End Sub
    
        Private Sub AddMenuItem()
            MyApplication.CustomizationContext = customTemplate
            Dim menuItem As Office.MsoControlType = _
                Office.MsoControlType.msoControlButton
            myControl = CType(MyApplication.CommandBars("Text").Controls.Add _
               (menuItem, 1, True), Office.CommandBarButton)
            myControl.Style = Office.MsoButtonStyle.msoButtonCaption
            myControl.Caption = "My Menu Item"
            myControl.Tag = "MyMenuItem"
            customTemplate.Saved = True
            GC.Collect()
        End Sub
        Sub myControl_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, _
                            ByRef CancelDefault As Boolean) Handles myControl.Click
            System.Windows.Forms.MessageBox.Show("My Menu Item clicked")
        End Sub
        Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
        End Sub
    End Class

    En espérant que cela t'aide.

    Cordialement,

    Thomas



    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse djebbi_virus jeudi 28 janvier 2010 09:00
    mercredi 27 janvier 2010 16:59

  • je troue un erreur lorsque je exécute le programme l'erreur (Impossible d'ouvrir ce modèle de document.) au niveaux de fonction getcustomtemplate() ligne :
      MyApplication.AddIns.Add(TemplatePath.ToString(), True
    )


    jeudi 28 janvier 2010 09:10
  • merciiiiiiiiiiiiiiiiiiiiiiii Thomas sa je trouve un solution merciiiiiiiiiiiiiiiiiiiiiiiii
    cordialement.

    • Marqué comme réponse djebbi_virus jeudi 28 janvier 2010 16:24
    jeudi 28 janvier 2010 16:24

  • je troue un erreur lorsque je exécute le programme l'erreur (Impossible d'ouvrir ce modèle de document.) au niveaux de fonction getcustomtemplate() ligne :
      MyApplication.AddIns.Add(TemplatePath.ToString(), True
    )


    Bonjour djebbi.
    J'ai la même erreur que toi. Comment l'as-tu résolue ?

    Merci,
    Jerome
    lundi 15 mars 2010 17:04