Как использовать метод sendkey.send в моем приложении формы C # Windows?

1

Я написал этот код в своем приложении, и я хочу использовать SendKeys.send("^ v"), чтобы отправить ключ ctrl + v в другие приложения, но когда я запустил приложение, он сказал: SendKeys не может запускаться внутри этого приложения, потому что приложение не обрабатывая сообщения Windows. Либо измените приложение для обработки сообщений, либо используйте метод SendKeys.SendWait. на самом деле это приложение является фоновым окном для преобразования текста в случае ошибки раскладки клавиатуры пользователем, нажав глобальный ключ. я не хочу, чтобы пользователь скопировал текст, нажав ctrl + c и прошлый с помощью ctrl + v, я хочу, чтобы эти действия выполнялись приложением после нажатия globalkey, единственная работа, которую должен выполнить пользователь, просто выберите текст для преобразования. это мой код: любая помощь?

    [DllImport("user32.dll")]   
    public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
    [DllImport("user32.dll")]
    public static extern bool UnregisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
    public static void assign()
    {
        var HotKeyManager = new HotkeyManager();
        string s = System.IO.File.ReadAllText(Application.StartupPath + "\\1.dat");
        if (s == "")
            MessageBox.Show("Please go to the setting menu and assign a shortcut keys for EN to Fa.");
        else
        {
            int c = 0;
            for (int i = 0; i < s.Length - 1; i++)
            {
                if (s[i] == 'c')
                    c += Constants.CTRL;
                if (s[i] == 'a')
                    c += Constants.ALT;
                if (s[i] == 's')
                    c += Constants.SHIFT;
            }
            RegisterHotKey(HotKeyManager.Handle, 123, c, s[s.Length - 1]);
        }
    }
    public static void assign2()
    {
        var HotKeyManager = new HotkeyManager();           
        string a = System.IO.File.ReadAllText(Application.StartupPath + "\\2.dat");
        if (a == "")
            MessageBox.Show("Please go to the setting menu and assign a shortcut keys for Fa to En.");
        else
        {
            int x = 0;
            for (int i = 0; i < a.Length - 1; i++)
            {
                if (a[i] == 'c')
                    x += Constants.CTRL;
                if (a[i] == 'a')
                    x += Constants.ALT;
                if (a[i] == 's')
                    x += Constants.SHIFT;
            }
            RegisterHotKey(HotKeyManager.Handle, 234, x, a[a.Length - 1]);
        }
    }
    public static string FaToEn(string[] t)
    {
        string s = "";
        int i;
        for (i = 0; i < t.Length; i++)
            switch (t[i])
            {
                case "ض":
                    {
                        s += "q";
                        break;
                    }
                case "ص":
                    {
                        s += "w";
                        break;
                    }
                case "ث":
                    {
                        s += "e";
                        break;
                    }
                case "ق":
                    {
                        s += "r";
                        break;
                    }
                case "ف":
                    {
                        s += "t";
                        break;
                    }
                case "غ":
                    {
                        s += "y";
                        break;
                    }
                case "ع":
                    {
                        s += "u";
                        break;
                    }
                case "ه":
                    {
                        s += "i";
                        break;
                    }
                case "خ":
                    {
                        s += "o";
                        break;
                    }
                case "ح":
                    {
                        s += "p";
                        break;
                    }
                case "ج":
                    {
                        s += "[";
                        break;
                    }
                case "چ":
                    {
                        s += "]";
                        break;
                    }
                case "ش":
                    {
                        s += "a";
                        break;
                    }
                case "س":
                    {
                        s += "s";
                        break;
                    }
                case "پ":
                    {
                        s += @"\";
                        break;
                    }
                case "ی":
                    {
                        s += "d";
                        break;
                    }
                case "ب":
                    {
                        s += "f";
                        break;
                    }
                case "ل":
                    {
                        s += "g";
                        break;
                    }
                case "ا":
                    {
                        s += "h";
                        break;
                    }
                case "ت":
                    {
                        s += "j";
                        break;
                    }
                case "ن":
                    {
                        s += "k";
                        break;
                    }
                case "آ":
                    {
                        s += "H";
                        break;
                    }
                case "م":
                    {
                        s += "l";
                        break;
                    }
                case "ک":
                    {
                        s += ";";
                        break;
                    }
                case "گ":
                    {
                        s += "'";
                        break;
                    }
                case "ظ":
                    {
                        s += "z";
                        break;
                    }
                case "ط":
                    {
                        s += "x";
                        break;
                    }
                case "ز":
                    {
                        s += "c";
                        break;
                    }
                case "ژ":
                    {
                        s += "C";
                        break;
                    }
                case "ر":
                    {
                        s += "v";
                        break;
                    }
                case "ذ":
                    {
                        s += "b";
                        break;
                    }
                case "د":
                    {
                        s += "n";
                        break;
                    }
                case "ئ":
                    {
                        s += "m";
                        break;
                    }
                case "و":
                    {
                        s += ",";
                        break;
                    }
                case "ً":
                    {
                        s += "Q";
                        break;
                    }
                case "ٌ":
                    {
                        s += "W";
                        break;
                    }
                case "ٍ":
                    {
                        s += "E";
                        break;
                    }
                case "ريال":
                    {
                        s += "R";
                        break;
                    }
                case "،":
                    {
                        s += "T";
                        break;
                    }
                case "؛":
                    {
                        s += "Y";
                        break;
                    }
                case ",":
                    {
                        s += "U";
                        break;
                    }
                case "]":
                    {
                        s += "I";
                        break;
                    }
                case "[":
                    {
                        s += "O";
                        break;
                    }
                case @"\":
                    {
                        s += "P";
                        break;
                    }
                case "ۀ":
                    {
                        s += "G";
                        break;
                    }
                case "ـ":
                    {
                        s += "J";
                        break;
                    }
                case "«":
                    {
                        s += "K";
                        break;
                    }
                case "»":
                    {
                        s += "L";
                        break;
                    }
                case "ة":
                    {
                        s += "Z";
                        break;
                    }
                case "ي":
                    {
                        s += "X";
                        break;
                    }
                case "ؤ":
                    {
                        s += "V";
                        break;
                    }
                case "إ":
                    {
                        s += "B";
                        break;
                    }
                case "أ":
                    {
                        s += "N";
                        break;
                    }
                case "ء":
                    {
                        s += "M";
                        break;
                    }
                case "؟":
                    {
                        s += "?";
                        break;
                    }
                default:
                    {
                        s += t[i];
                        break;
                    }
            }
        return s;
    }
    public static string EnToFa(string[] t)
    {
        string s = "";
        int i;
        for (i = 0; i < t.Length; i++)
            switch (t[i])
            {
                case "q":
                    {
                        s += "ض";
                        break;
                    }
                case "w":
                    {
                        s += "ص";
                        break;
                    }
                case "e":
                    {
                        s += "ث";
                        break;
                    }
                case "r":
                    {
                        s += "ق";
                        break;
                    }
                case "t":
                    {
                        s += "ف";
                        break;
                    }
                case "y":
                    {
                        s += "غ";
                        break;
                    }
                case "u":
                    {
                        s += "ع";
                        break;
                    }
                case "i":
                    {
                        s += "ه";
                        break;
                    }
                case "o":
                    {
                        s += "خ";
                        break;
                    }
                case "p":
                    {
                        s += "ح";
                        break;
                    }
                case "[":
                    {
                        s += "ج";
                        break;
                    }
                case "]":
                    {
                        s += "چ";
                        break;
                    }
                case "a":
                    {
                        s += "ش";
                        break;
                    }
                case "s":
                    {
                        s += "س";
                        break;
                    }
                case @"\":
                    {
                        s += "پ";
                        break;
                    }
                case "d":
                    {
                        s += "ی";
                        break;
                    }
                case "f":
                    {
                        s += "ب";
                        break;
                    }
                case "g":
                    {
                        s += "ل";
                        break;
                    }
                case "h":
                    {
                        s += "ا";
                        break;
                    }
                case "j":
                    {
                        s += "ت";
                        break;
                    }
                case "k":
                    {
                        s += "ن";
                        break;
                    }
                case "H":
                    {
                        s += "آ";
                        break;
                    }
                case "l":
                    {
                        s += "م";
                        break;
                    }
                case ";":
                    {
                        s += "ک";
                        break;
                    }
                case "'":
                    {
                        s += "گ";
                        break;
                    }
                case "z":
                    {
                        s += "ظ";
                        break;
                    }
                case "x":
                    {
                        s += "ط";
                        break;
                    }
                case "c":
                    {
                        s += "ز";
                        break;
                    }
                case "C":
                    {
                        s += "ژ";
                        break;
                    }
                case "v":
                    {
                        s += "ر";
                        break;
                    }
                case "b":
                    {
                        s += "ذ";
                        break;
                    }
                case "n":
                    {
                        s += "د";
                        break;
                    }
                case "m":
                    {
                        s += "ئ";
                        break;
                    }
                case ",":
                    {
                        s += "و";
                        break;
                    }
                case "Q":
                    {
                        s += "ً";
                        break;
                    }
                case "W":
                    {
                        s += "ٌ";
                        break;
                    }
                case "E":
                    {
                        s += "ٍ";
                        break;
                    }
                case "R":
                    {
                        s += "ريال";
                        break;
                    }
                case "T":
                    {
                        s += "،";
                        break;
                    }
                case "Y":
                    {
                        s += "؛";
                        break;
                    }
                case "U":
                    {
                        s += ",";
                        break;
                    }
                case "I":
                    {
                        s += "]";
                        break;
                    }
                case "O":
                    {
                        s += "[";
                        break;
                    }
                case "P":
                    {
                        s += @"\";
                        break;
                    }
                case "{":
                    {
                        s += "}";
                        break;
                    }
                case "A":
                    {
                        s += "َ";
                        break;
                    }
                case "S":
                    {
                        s += "ُ";
                        break;
                    }
                case "D":
                    {
                        s += "ِ";
                        break;
                    }
                case "F":
                    {
                        s += "ّ";
                        break;
                    }
                case "G":
                    {
                        s += "ۀ";
                        break;
                    }
                case "J":
                    {
                        s += "ـ";
                        break;
                    }
                case "K":
                    {
                        s += "«";
                        break;
                    }
                case "L":
                    {
                        s += "»";
                        break;
                    }
                case "Z":
                    {
                        s += "ة";
                        break;
                    }
                case "X":
                    {
                        s += "ي";
                        break;
                    }
                case "V":
                    {
                        s += "ؤ";
                        break;
                    }
                case "B":
                    {
                        s += "إ";
                        break;
                    }
                case "N":
                    {
                        s += "أ";
                        break;
                    }
                case "M":
                    {
                        s += "ء";
                        break;
                    }
                case "?":
                    {
                        s += "؟";
                        break;
                    }
                default:
                    {
                        s += t[i];
                        break;
                    }
            }
        return s;
    }

    public sealed class HotkeyManager : NativeWindow, IDisposable
    {
        public HotkeyManager()
        {
            CreateHandle(new CreateParams());
        }
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == Constants.WM_HOTKEY_MSG_ID)
            {
                if (m.WParam.ToInt32() == 123)
                {
                    SendKeys.SendWait("^c");
                    string s = System.Windows.Forms.Clipboard.GetText(TextDataFormat.UnicodeText);
                    int tlength = s.Length;
                    char[] ss = s.ToCharArray();
                    if (tlength > 1)
                    {
                        string[] t = new string[tlength];
                        for (int i = 0; i < tlength; i++)
                            t[i] = ss[i].ToString();
                        System.Windows.Forms.Clipboard.SetText(EnToFa(t), TextDataFormat.UnicodeText);
                    }                        
                }
                if (m.WParam.ToInt32() == 234)
                {
                    SendKeys.SendWait("^c");
                    string s = System.Windows.Forms.Clipboard.GetText(TextDataFormat.UnicodeText);
                    int tlength = s.Length;
                    char[] ss = s.ToCharArray();
                    if (tlength > 1)
                    {
                        string[] t = new string[tlength];
                        for (int i = 0; i < tlength; i++)
                            t[i] = ss[i].ToString();
                        System.Windows.Forms.Clipboard.SetText(FaToEn(t), TextDataFormat.UnicodeText);                            
                    }                        
                }                    
            }
            SendKeys.Send("^v");
            base.WndProc(ref m);               
        }

        public void Dispose()
        {
            DestroyHandle();
        }
    } 
  • 0
    Это было создано как консольное приложение?
  • 0
    НЕТ, это приложение Windows Form, как я сказал в заголовке.
Показать ещё 8 комментариев
Теги:
winforms

1 ответ

0
Лучший ответ

вы можете попробовать следующее

1- активировать другое приложение, работающее в фоновом режиме

вы можете найти эту ссылку полезными для FindWindow и SetForegroundWindow?

2- применяются sendKeys

SendKeys.Send("^(V)");

3- активирует ваше основное приложение

Надеюсь, что это поможет вам

  • 0
    это правильный путь, но я не знаю достаточно, чтобы сделать это, нужна дополнительная помощь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню