以编程方式将文本粘贴到另一个应用程序的文本框中

时间:2016-07-08 17:32:51

标签: c# wpf

我希望能够将应用程序的结果粘贴到另一个应用程序。谷歌搜索,我能找到的是ApplicationCommands.Paste。这将把它粘贴到我的应用程序而不是其他应用程序

背景:我的应用程序需要与非常旧的应用程序进行交互。此应用程序尚未开发,不会有任何API调用。意思是任何答案,例如"通过DLL链接您的应用程序"只有当它还包括时间机器时才会被例外:P所以解决方案是将我的应用程序的结果简单粘贴到旧应用程序。

出于工作流原因,客户希望我的应用程序消失并自动将结果粘贴到打开的文本框中(如果失败则手动粘贴结果)。

隐藏窗口很简单,但是如何找到当前活动的应用程序然后将其粘贴?这甚至可能吗?另请注意,此应用程序是 NOT .NET(如果我是正确的话,则为VB 6)。

1 个答案:

答案 0 :(得分:3)

您可以调出其他应用并发送组合键......例如:

[DllImport ("User32.dll")]
static extern int SetForegroundWindow(IntPtr hwnd);

public static void PasteToApplication(string appName)
{
  var proc = Process.GetProcessesByName(appName).FirstOrDefault();
  if(proc != null)
  {
    var handle = proc.MainWindowHandle;
    SetForegroundWindow(handle);
    SendKeys.SendWait("^v");
  }
}

这应该打开其他应用程序的窗口并发送ctrl-v命令。通过一些实验,您可以找到要将粘贴发送到的控件的确切句柄,并设置焦点以及