2012-02-24 60 views
1

我想用C#編寫一個程序,該程序將文本發送到其他窗口。 如何在C#中編寫一個命令,將文本發送到當前處於用戶焦點下的窗口中?發送文本到任何當前焦點的窗口

例如:

如果用戶點擊一個開放的記事本窗口,或開放前景信,或打開Excel工作表,然後點擊我的節目的按鈕,文本將被「粘貼」直接進入用戶最後點擊的最後一個記事本窗口/展望字母/ excel單元格。

我希望我的問題很清楚。我沒有那麼有經驗,並且缺少很多術語。

+0

請不要將「C#」等添加到您的標題中。這就是標籤的用途。 – 2012-02-24 16:40:50

回答

3

把你的應用程序失焦的通過最小化或隱藏在主窗口中,然後用

SendKeys.SendWait("Hello World!");  

您的短信最後,恢復你的主窗口。


如果代碼中的主要形式執行,你可以這樣做

this.Visible = false; 
SendKeys.SendWait("Hello World!");  
this.Visible = true; 
+0

只要窗體具有默認情況下具有焦點的某種文本控件,它就會工作。如果您在調用之前知道應用程序,則可能會發送將焦點放在控件上的鍵。您可以發送{TAB} {TAB} {TAB}或其他...或者甚至是CTRL或ALT組合。 – carny666 2012-02-24 16:40:38

+0

謝謝,這有助於很多! – Zephram 2012-02-24 17:03:08

+0

現在我必須找到一種方法來控制其他正在運行的程序的管理。 – Zephram 2012-02-24 17:04:22

2

Olivier的反應實際上似乎更準確的(教我的東西:))比我原來的「似乎並沒有實現」。如果您需要一個例子,再看看這個:

http://www.codeproject.com/Articles/18366/Sending-Keystrokes-to-another-Application-in-C

然而,在更復雜的層面,沒有一個API調用到,沒有更多的,你可以做超出了這個解決方案。

+0

打敗我吧。我同意,但正如你對API所說的那樣,如果要插入的程序是應用程序的一部分,應該有一種方法來解決它。但是,這是一個稍微不同的問題。 – Joshua 2012-02-24 16:31:55

+0

實際上,在研究Olivier的回答後,我認爲他是對的,並且我學到了一些新的東西:) – 2012-02-24 16:35:17

+0

它可能有效,但是您必須準確地將焦點放在其他程序的窗口中。在應用程序中查找「文本字段」並不像我想的那麼簡單,但我想如果這是它可能工作的最後一件事情。似乎這對我來說會很麻煩。 – Joshua 2012-02-24 16:45:19