【问题标题】:How to paste text into a different application with C#如何使用 C# 将文本粘贴到不同的应用程序中
【发布时间】:2014-05-30 03:50:33
【问题描述】:

这是我的场景: 用户打开了两个应用程序。假设一个应用程序是记事本,其中包含一些文本,另一个是我的 C# 应用程序。

用户现在将鼠标光标放在记事本文本内的某个位置,然后单击我的 C# 应用程序中的按钮。结果,我的应用程序中的文本字符串被粘贴到光标所在的记事本中。

我的问题是:完成上述任务的一般方法是什么,以及可能推荐哪些课程等?

【问题讨论】:

  • 我强烈建议您不要这样做。相反,只需让应用程序中的按钮将信息复制到剪贴板(一个简单的搜索将向您展示如何执行此操作)。让用户明确地将文本粘贴到他们想要的任何应用程序中,无论他们想要什么。尝试为他们这样做会很危险、容易出错、让用户感到困惑、困难且不可靠。
  • 谢谢约翰,注意到一切。仅供参考,我同意一般来说这不是一个人会这样做的方式,但我的应用程序的更广泛范围实际上需要按照我的描述完成此操作。
  • 这可能真的很困难,因为当用户单击 C# 应用程序中的按钮时,记事本会失去焦点,我不知道您是否可以通过互操作从那里可靠地获取光标文本位置。跨度>
  • 这听起来像是一个小而琐碎的自动热键脚本的主要用例。您是否 100%需要用 C# 解决这个程序?
  • 我检查了 autohotkey,它看起来很棒,但我确实需要将功能内置到我的 C# 应用程序中。只有当我使用互操作碰壁时,我才会开始研究 autohokey。

标签: c# windows paste


【解决方案1】:

我会考虑使用互操作调用来实现这一点。使用 WM 命令 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644927(v=vs.85).aspx#system_defined) 和 GetDesktop() 具体查看 GetWindow() 和 SendMessage。

GetDesktop 将允许您获取桌面的所有顶级子窗口(所有顶级窗口都是桌面窗口的子窗口)。

然后您应该能够使用 GetWindow 获取您正在寻找的窗口句柄,然后使用 SendMessage 将文本设置到文本框中。

【讨论】:

  • 谢谢 Mike,我认为解决方案在于互操作,现在将深入研究。我想我应该能够轻松获取我正在寻找的窗口并向其发送消息,但在这种特殊情况下,我需要在我的按钮被单击之前将文本粘贴到记事本中光标所在的位置.
  • 我认为你可以使用winapi函数GetCaretPos msdn.microsoft.com/en-us/library/ms648402%28v=vs.85%29.aspx获取光标位置
猜你喜欢
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 2021-11-03
  • 1970-01-01
  • 2016-08-01
  • 2012-07-01
相关资源
最近更新 更多