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

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

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

איך ליצור קיצורי מקשים לוורד דרך C# vsto?

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

    כידוע אין דרך ישירה ליצור קישורי מקשים בוורד דרך vsto
    ראיתי מישהו שהציע את הקוד דלהלן:
    לפעמים עובד לפעמים וורד חוסם אותו כנראה שיש בו איזהו שגיאה או משהו.
    איך שלא יהיה זה הרבה מעבר לרמה שלי אם מישהו יוכל להגיד לי מה קורה קורה בקוד ומה צריך לשנות זה מאוד יעזור לי
    תודה

    using System;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    using Microsoft.Office.Tools.Word;
    
    namespace WordAddIn
    {
        public partial class ThisAddIn
        {
            private IntPtr hookId = IntPtr.Zero;
            private const int WM_KEYDOWN = 0x0100;
            private const int WM_KEYUP = 0x0101;
            private const int WM_SYSKEYDOWN = 0x0104;
            private const int WM_SYSKEYUP = 0x0105;
    
            // Import necessary Windows API functions
            [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
    
            [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            [return: MarshalAs(UnmanagedType.Bool)]
            private static extern bool UnhookWindowsHookEx(IntPtr hhk);
    
            [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
    
            [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            private static extern IntPtr GetModuleHandle(string lpModuleName);
    
            // Delegate for the low-level keyboard procedure
            private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);
    
            // Low-level keyboard hook procedure
            private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
            {
                if (nCode >= 0 && (wParam == (IntPtr)WM_KEYDOWN || wParam == (IntPtr)WM_SYSKEYDOWN))
                {
                    int vkCode = Marshal.ReadInt32(lParam);
                    // Handle the key down event
                    MessageBox.Show($"Key Down: {((Keys)vkCode).ToString()}");
                }
                else if (nCode >= 0 && (wParam == (IntPtr)WM_KEYUP || wParam == (IntPtr)WM_SYSKEYUP))
                {
                    int vkCode = Marshal.ReadInt32(lParam);
                    // Handle the key up event
                    MessageBox.Show($"Key Up: {((Keys)vkCode).ToString()}");
                }
    
                return CallNextHookEx(hookId, nCode, wParam, lParam);
            }
    
            // Install the low-level keyboard hook
            private void SetHook()
            {
                using (Process curProcess = Process.GetCurrentProcess())
                using (ProcessModule curModule = curProcess.MainModule)
                {
                    hookId = SetWindowsHookEx(13, HookCallback, GetModuleHandle(curModule.ModuleName), 0);
                }
            }
    
            // Uninstall the low-level keyboard hook
            private void Unhook()
            {
                UnhookWindowsHookEx(hookId);
            }
    
            private void ThisAddIn_Startup(object sender, System.EventArgs e)
            {
                SetHook(); // Start listening to keyboard events when the add-in starts
            }
    
            private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
            {
                Unhook(); // Stop listening to keyboard events when the add-in shuts down
            }
        }
    }
    
    

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

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

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

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

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