דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. איך ליצר קיצור מקשים בוורד עבור קודים ב-C# VSTO

איך ליצר קיצור מקשים בוורד עבור קודים ב-C# VSTO

מתוזמן נעוץ נעול הועבר תכנות
1 פוסטים 1 כותבים 187 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    כתב ב נערך לאחרונה על ידי pcinfogmach
    #1

    יש כמה דרכים לעשות זאת כאן אכתוב את הבסיס איך לעשות זאת על ידי הוספת קוד vba('רך אחרת תוכלו לראות פה)

    אפשר לשכלל את זה כמובן אני רק כותב את הבסיס שאם מישהו יצטרך שלא יתחיל מאפס

    1. יצירת קלאס ב-C#: בקוד C# יש ליצור class ולהוסיף לו את התג ComVisible(true) כדי לאפשר ל-Microsoft Office לגשת אליו דרך COM. לשם הדוגמה בתוך הקלאס נגדיר פונקציה פשוטה בשם GetNumber שמחזירה את המספר 42.
     [ComVisible(true)]
     public class MyManagedFunctions
     {
         public int GetNumber()
         {
             return 42;
         }
     }
    
    1. קוד עבור ה-startup של התוסף: בקוד ה-C# הוא נכתב תחת אירוע ה-startup של התוסף. בעת ה-startup, הקוד מפעיל את הפונקציה RegisterCallback עם אינסטנס של ה-class שנוצר בצעד הקודם. בנוסף, הקוד מצריך תגובה לאירוע של פתיחת מסמך חדש (DocumentOpen). כאשר מסמך נפתח, הקוד מפעיל פונקציה נוספת (Application_DocumentOpen) בו אפשר לקרוא לקודים של המאקרו דלהלן שאחראיים על חיבור או הסרת הקיצורי מקשים לפונקציה.
     private void ThisAddIn_Startup(object sender, System.EventArgs e)
     {
         this.Application.Run("RegisterCallback", new MyManagedFunctions());
         
         this.Application.DocumentOpen += Application_DocumentOpen; 
     }
    
     private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc)
     {
         //this.Application.Run("AssignShortcut");  // Run the VBA macro to assign the shortcut
         //this.Application.Run("RemoveShortcut");  // Run the VBA macro to remove the shortcut
         this.Application.DocumentOpen -= Application_DocumentOpen;
     }
    
    1. קוד בשביל ה-מאקרו VBA: הקוד ב-VBA מגיב לפעולות של המשתמש בתוכניות כמו Word. הוא כולל כמה פונקציות:
      RegisterCallback שמקבלת אובייקט ומגדירה אותו למשתנה managedObject,
      ו-GetNumberFromVSTO שמפעילה את הפונקציה GetNumber מה-C# ומציגה את התוצאה ב-MessageBox.
      יש גם פונקציות להקצאת קיצורי מקלדת (AssignShortcut ו-RemoveShortcut) ופונקציה (RemoveAllShortcuts) להסרת כל הקיצורי מקלדת.
      ו- ShowAllShortcutKeys - למקרה ששחכתם מה עשיתם בעבר
    Dim managedObject As Object
    
    Public Sub RegisterCallback(callback As Object)
        Set managedObject = callback
    End Sub
    
    Public Function GetNumberFromVSTO() As Integer
        GetNumberFromVSTO = managedObject.GetNumber()
        MsgBox "The number is " & GetNumberFromVSTO
    End Function
    
    Sub CallVstoFunction()
    Call GetNumberFromVSTO
    End Sub
    
    Public Sub AssignShortcut()
        ' Assign Ctrl+Shift+Q to CallVstoFunction
        CustomizationContext = NormalTemplate
        KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyControl, wdKeyShift, wdKeyQ), _
                        KeyCategory:=wdKeyCategoryMacro, _
                        Command:="CallVstoFunction"
    End Sub
    
    Public Sub RemoveShortcut()
        ' Remove the shortcut key assignment for CallVstoFunction
        Dim keyBinding As keyBinding
        For Each keyBinding In KeyBindings
            If keyBinding.Command = "Normal.Module1.CallVstoFunction" Then
                keyBinding.Clear
            End If
        Next keyBinding
    End Sub
    
    Public Sub RemoveAllShortcuts()
        ' Remove the shortcut key assignment
         CustomizationContext = NormalTemplate
        KeyBindings.ClearAll
    End Sub
    
    Sub ShowAllShortcutKeys()
        Dim keyBinding As keyBinding
        Dim msg As String
        
        msg = "Currently assigned shortcut keys:" & vbCrLf
        
        For Each keyBinding In Application.KeyBindings
            msg = msg & "Command: " & keyBinding.Command & ", Key: " & keyBinding.KeyString & vbCrLf
        Next keyBinding
        
        MsgBox msg
    End Sub
    

    לפעמים צריך להתחיל את וורד מחדש כדי שהקודים 'ייתפסו'

    גמ"ח מידע מחשבים ואופיס

    תגובה 1 תגובה אחרונה
    3

    בא תתחבר לדף היומי!
    • התחברות

    • אין לך חשבון עדיין? הרשמה

    • התחברו או הירשמו כדי לחפש.
    • פוסט ראשון
      פוסט אחרון
    0
    • דף הבית
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    • חוקי הפורום