2014-11-14 99 views
1

我已經在我的應用程序writen這個代碼,我想用SendKeys.send(「^ V」)發送CTRL + V鍵移動到其它的應用程序,但是當我執行它說的應用:的SendKeys無法在此應用程序,因爲內運行該應用程序不處理Windows消息。請將應用程序更改爲處理消息,或使用SendKeys.SendWait方法。 實際上,這個應用程序是一個Windows後臺應用程序,用於通過按全局鍵,在用戶鍵盤佈局錯誤的情況下轉換文本。 我不按CTRL + C和過去用Ctrl + V要用戶複製的文字,我想這個行動由應用程序進行按壓globalkey,該用戶必須做的只是選擇文本轉換的唯一下班後。 這是我的代碼: 有什麼幫助?如何在我的C#窗體表單應用程序中使用sendkey.send方法?

[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窗體應用程序,正如我在標題中所述。 – Nashalj

+0

顯然,無論出於何種原因,套件無法找到消息泵。不過,我注意到你使用SendWait,因爲它告訴你,只有三個地方中的兩個。另外,第三個地方,你仍然使用SendKeys,看起來它會發送^ v收到每個看起來不合理的消息。 –

回答

0

你可以試試下面的

1-激活您是在後臺

運行其他應用程序,你可能會發現此鏈接有用FindWindow and SetForegroundWindow alternatives?

2-應用的SendKeys

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

3-激活你的主要applict離子

希望這會幫助你

+0

這是正確的方式,我不知道這樣做,需要更多的幫助 – Nashalj

相關問題