2014-11-14 2 views
1

내 응용 프로그램에서이 코드를 작성 했으므로 SendKeys.send ("^ v")를 사용하여 Ctrl + v 키를 다른 응용 프로그램에 보내고 싶지만 앱을 실행할 때 다음과 같이 말합니다. SendKeys는이 응용 프로그램 내에서 실행할 수 없습니다. 응용 프로그램이 Windows 메시지를 처리하지 않습니다. 메시지를 처리하도록 응용 프로그램을 변경하거나 SendKeys.SendWait 메서드를 사용하십시오. 실제로이 응용 프로그램은 전체 키를 눌러 사용자가 키보드 레이아웃 실수를했을 때 텍스트를 변환하는 Windows 배경 앱입니다. 나는 ctrl + c를 누르고 ctrl + v를 사용하여 사용자 복사 텍스트를 원하지 않습니다.이 작업은 글로벌 키를 누르면 응용 프로그램이 수행하기를 원합니다. 사용자가 수행해야하는 유일한 작업은 변환 할 텍스트를 선택하는 것입니다. 이것은 내 코드입니다. 어떤 도움이 필요합니까?내 C# Windows 양식 응용 프로그램에서 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

아니, 그것은 제목에서 말한 것처럼 윈도우 양식 응용 프로그램입니다. – Nashalj

+0

분명히, 어떤 이유로 든 키트는 메시지 펌프를 찾을 수 없습니다. 그러나 SendWait은 3 곳 중 2 곳에서만 사용하고 있음을 알려드립니다. 또한, 아직 SendKeys를 사용하고있는 세 번째 장소는 수신 된 모든 메시지에 대해^v를 전송하는 것처럼 보이며 이는 적당하지 않습니다. –

답변

0

당신은 당신이에서 SendKeys를 적용 도움이 링크 FindWindow and SetForegroundWindow alternatives?

2를 찾을 수있는 다음

1- 배경

에서 실행중인 다른 응용 프로그램을 활성화 시도 할 수

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

3 주 앱을 다시 활성화하십시오. 이온

희망이 도움이 될 것입니다

+0

그것은 올바른 방법입니다. 부탁입니다. 도움이 필요합니다. – Nashalj

관련 문제