2017-02-28 38 views
0

我想使用sendkeys,但將它發送到一個非重點的程序。例如,我想使用sendkeys來記事本 - 無標題,沒有它的焦點。對不起,如果不清楚,我會詳細說明。我當前的代碼是這樣的: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,但它對我沒有任何意義。如果可能,我可以獲得更多幫助而不是微軟網頁嗎? –

回答

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); 
     } 
    } 
} 
相關問題