C# 将文本发送到当前处于焦点的任何窗口

C# 将文本发送到当前处于焦点的任何窗口,c#,string,text,C#,String,Text,我正试图用C语言编写一个程序,将文本发送到其他窗口。 如何用C语言编写命令,将文本发送到当前处于用户焦点下的窗口 例如: 如果用户单击打开的记事本窗口、打开的outlook信函或打开的excel工作表,然后单击“我的程序”上的按钮,则文本将直接“粘贴”到用户上次单击的最后一个记事本窗口/outlook信函/excel单元格中 我希望我的问题足够清楚。我没有那么丰富的经验,而且缺少很多术语。通过最小化或隐藏主窗口,使您的应用程序失去焦点,然后使用 SendKeys.SendWait("Hello

我正试图用C语言编写一个程序,将文本发送到其他窗口。 如何用C语言编写命令,将文本发送到当前处于用户焦点下的窗口

例如:

如果用户单击打开的记事本窗口、打开的outlook信函或打开的excel工作表,然后单击“我的程序”上的按钮,则文本将直接“粘贴”到用户上次单击的最后一个记事本窗口/outlook信函/excel单元格中


我希望我的问题足够清楚。我没有那么丰富的经验,而且缺少很多术语。

通过最小化或隐藏主窗口,使您的应用程序失去焦点,然后使用

SendKeys.SendWait("Hello World!");    
最后,恢复主窗口


如果代码是以主窗体执行的,您可以这样做

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

奥利弗的回答似乎比我最初的“似乎无法实现”更准确(并教会了我一些东西:)。如果您需要一个示例,请查看以下内容:


然而,在更复杂的层面上,如果没有API可调用,那么除了此解决方案之外,您可以做的事情就不多了。

请告诉我。我同意,但正如您对API所说的,如果要插入的程序是应用程序的一部分,那么应该有办法欺骗它。但是,这是一个稍微不同的问题。事实上,在研究了奥利弗的答案之后,我认为他是对的,我学到了一些新的东西:)它可能会起作用,但你必须准确地关注另一个程序中的窗口。在应用程序中查找“文本字段”对我来说并不是那么简单,尽管我认为如果这是最后一件事,它可能会起作用。但对我来说,这似乎是个问题。我完全同意,但这是半可行的。如果你打开了记事本之类的东西,那么文本区域通常是聚焦的。只要表单有某种文本控件,默认情况下是聚焦的,这就行得通。如果在调用之前知道应用程序,则可能会发送将焦点放在控件上的键。你可以发送{TAB}{TAB}{TAB}或任何东西。。现在我必须找到一种方法来控制其他正在运行的程序的管理将我的应用程序发送到无限循环中。我正在尝试不同的方法来使用“SendKeys”,但没有成功。。。有什么建议吗?对我很有用。我尝试了三种方法,1:
this.Visible=false;发送键;可见=真实,2:
this.Hide();发送键;this.Show(),3:
this.WindowState=FormWindowState.Minimized;发送键;this.WindowState=FormWindowState.Normal
。它们都可以工作。你必须隐藏执行SendKeys的应用程序,否则它会将密钥发送给自己;但是,这将不起作用,因为它很忙,因为它仍在执行sendkeys,而sendkeys又在等待接受密钥。这会造成您的死锁。请不要在标题中添加“C#”之类的内容。这就是标签的用途。