我希望能够将应用程序的结果粘贴到另一个应用程序。谷歌搜索,我能找到的是ApplicationCommands.Paste。这将把它粘贴到我的应用程序而不是其他应用程序
背景:我的应用程序需要与非常旧的应用程序进行交互。此应用程序尚未开发,不会有任何API调用。意思是任何答案,例如"通过DLL链接您的应用程序"只有当它还包括时间机器时才会被例外:P所以解决方案是将我的应用程序的结果简单粘贴到旧应用程序。
出于工作流原因,客户希望我的应用程序消失并自动将结果粘贴到打开的文本框中(如果失败则手动粘贴结果)。
隐藏窗口很简单,但是如何找到当前活动的应用程序然后将其粘贴?这甚至可能吗?另请注意,此应用程序是 NOT .NET(如果我是正确的话,则为VB 6)。
答案 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命令。通过一些实验,您可以找到要将粘贴发送到的控件的确切句柄,并设置焦点以及