如何在我的 C# windows 窗体应用程序中使用 sendkey.send 方法? [英] how to use sendkey.send method in my C# windows form application?

查看:30
本文介绍了如何在我的 C# windows 窗体应用程序中使用 sendkey.send 方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的应用程序中编写了这段代码,我想使用 SendKeys.send("^v") 将 ctrl+v 键发送到另一个应用程序,但是当我执行该应用程序时,它说:SendKeys 无法在内部运行此应用程序,因为该应用程序不处理 Windows 消息.更改应用程序以处理消息,或使用 SendKeys.SendWait 方法.实际上,这个应用程序是一个 Windows 后台应用程序,用于在用户按全局键出现键盘布局错误的情况下转换文本.我不希望用户通过按 ctrl+c 和过去的 ctrl+v 复制文本,我希望在按下 globalkey 后由应用程序完成此操作,用户必须执行的唯一工作只需选择一个文本进行转换.这是我的代码:有什么帮助吗?

i have writen this code in my app and I want use SendKeys.send("^v") to send ctrl+v key to another apps, but when i execute the app it said:SendKeys cannot run inside this application because the application is not handling Windows messages. Either change the application to handle messages, or use the SendKeys.SendWait method. actually this app is a windows background app for converting text in case of keyboard layout mistake by user by pressing a global key. i don't want user copy text by pressing ctrl+c and past with ctrl+v, I want this actions done by app after pressing a globalkey, the only work that user must to do it just select a text for converting. this is my code: any help?

    [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();
        }
    } 

推荐答案

你可以试试下面的

1- 激活另一个在后台运行的应用程序

1- activate your another application that is running in background

您可能会发现此链接很有帮助 FindWindow 和 SetForegroundWindow 替代方案?

you might find this link helpful FindWindow and SetForegroundWindow alternatives?

2- 应用 sendKeys

2- apply the sendKeys

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

3- 重新激活您的主要应用程序

3- reactivate your main appliction

希望对你有帮助

这篇关于如何在我的 C# windows 窗体应用程序中使用 sendkey.send 方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆