2017-02-28 3 views
0

sendkeys를 사용하려고하지만 집중되지 않은 프로그램으로 보냅니다. 예를 들어, 집중하지 않고 메모지 - 제목 없음으로 보내기 키를 사용하고 싶습니다. 죄송합니다. 불분명하면 자세히 설명 드리겠습니다.포커스가없는 특정 프로그램에 키를 보냅니다.

 string txt = Regex.Replace(richTextBox3.Text, "[+^%~()]", "{$0}"); 

     System.Threading.Thread.Sleep(1000); 
     SendKeys.Send(txt + "{ENTER}"); 

내가 sendMessage 첨부를 사용하는 경우, 누군가가 나에게 내가 무엇을해야하는지의 예를 보여 관심을 것입니다 : 내 현재 코드는 무엇입니까? 온라인에서 찾은 것을 발견하지 못하여 내 문제에 매우 유용합니다.

+0

가능한 복제 [C 번호에 불활성 애플리케이션 키를 전송 /. NET (http://stackoverflow.com/questions/1584767/sending-keys-to-inactive-application-in-c-net) –

+1

UI 자동화를 사용하는 것이 더 낫습니다. –

+0

@RaymondChen SendMessage를 살펴 보았지만 아무런 의미가 없습니다. 가능하다면 Microsoft 페이지보다는 도움을 더받을 수 있습니까? –

답변

1

다음 코드는 previous SO answer에서 발견되었습니다. PostMessage API는 Windows 메시지를 특정 Windows 핸들로 보냅니다. 아래 코드는 포커스를주지 않고 Internet Explorer의 모든 인스턴스에 대해 키 다운 이벤트가 발생하도록하여 F5 키가 눌러 진 것을 시뮬레이션합니다. 추가 키 코드 목록은 here입니다.

static class Program 
{ 
    const UInt32 WM_KEYDOWN = 0x0100; 
    const int VK_F5 = 0x74; 

    [DllImport("user32.dll")] 
    static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam); 

    [STAThread] 
    static void Main() 
    { 
     while(true) 
     { 
      Process [] processes = Process.GetProcessesByName("iexplore"); 

      foreach(Process proc in processes) 
       PostMessage(proc.MainWindowHandle, WM_KEYDOWN, VK_F5, 0); 

      Thread.Sleep(5000); 
     } 
    } 
} 
관련 문제