0

我正在研究一个类似于复制和粘贴但使用我自己的算法而不是使用剪贴板的概念。

我们的用户使用许多包含零件编号的不同程序。这就是我的概念的运作方式。

  1. 用户突出显示来自任何应用程序(word、excel、pdf、JDE 等)的零件编号
  2. 通过热键或单击另一个应用程序,用户启动我的例程。
  3. 我的例程从原始应用程序中获取该文本并相应地处理它。

我知道如何使用剪贴板来获取文本。

我不确定如何从运行我的代码之前处于活动状态的应用程序中获取当前选定的文本?我是否需要强制我的用户先复制到剪贴板然后运行我的应用程序,或者我可以创建自己的复制/粘贴类型的 Windows 加载项?

为此首选 VB,但如果更容易,也可以使用 C++ 或 C#。


至于为什么的问题,因为我们希望动作对用户无缝。将有几个幕后操作发生,然后用户将看到一个浏览器,其中包含与该部件号相关的相关信息。最终,我不希望中间屏幕弹出,而是完全对用户隐藏。如果我要求他们复制然后运行我的例程,那么我将在我希望避免的用户路径中添加一个额外的步骤。

我稍微查看了右键菜单上下文,但发现每个程序都可以有自己的覆盖。我无法找到一种方法来全局覆盖所有右键单击上下文菜单以包含新操作。

4

1 回答 1

2

这篇文章

var element = AutomationElement.FocusedElement;

if (element != null)
{
    object pattern;
    if (element.TryGetCurrentPattern(TextPattern.Pattern, out pattern))
    {
        var tp = (TextPattern) pattern;
        var sb = new StringBuilder();

        foreach (var r in tp.GetSelection())
        {
            sb.AppendLine(r.GetText(-1));
        }

        var selectedText = sb.ToString();
    }
}

它在 C# 中,但翻译起来应该很简单。

于 2013-10-08T03:58:38.623 回答