C# 是否可以使用Interop按位置(顶部和左侧偏移量)选择Powerpoint文本框中的文本?

C# 是否可以使用Interop按位置(顶部和左侧偏移量)选择Powerpoint文本框中的文本?,c#,powerpoint,office-interop,C#,Powerpoint,Office Interop,我试图通过互操作自动化Powerpoint文本框中文本编辑的基本过程,但遇到了一个障碍。我需要能够在屏幕上的特定位置开始文本编辑过程,在抓取MSDN之后,我仍然不知道如何做。用例可以归结为: 我的服务接收X和Y坐标 我告诉Powerpoint在该位置选择形状 我告诉Powerpoint将闪烁的光标放在用户自己点击开始编辑文本的位置 这是让我绊倒的第三步。Word具有RangeFromPoint,它返回文本范围。但在Powerpoint中,该方法返回一个形状。我可以使用TextRange.Char

我试图通过互操作自动化Powerpoint文本框中文本编辑的基本过程,但遇到了一个障碍。我需要能够在屏幕上的特定位置开始文本编辑过程,在抓取MSDN之后,我仍然不知道如何做。用例可以归结为:

  • 我的服务接收X和Y坐标
  • 我告诉Powerpoint在该位置选择形状
  • 我告诉Powerpoint将闪烁的光标放在用户自己点击开始编辑文本的位置
  • 这是让我绊倒的第三步。Word具有RangeFromPoint,它返回文本范围。但在Powerpoint中,该方法返回一个形状。我可以使用TextRange.Characters()将光标手动放置在形状的文本范围内,但它接受字符索引值而不是屏幕坐标


    任何人都知道如何做到这一点(除了通过Win32调用强制输入鼠标消息)

    每一个文本位,直到字符级别,都可以被视为一个范围;每个文本区域都具有.BoundLeft、.BoundTop、.BoundHeight和.BoundWidth属性,这些属性返回文本区域边界矩形的坐标

    例如,此代码段将为您提供当前选定形状中第三个文本字符的左坐标:

    With ActiveWindow.Selection.ShapeRange(1)
       Debug.Print .TextFrame.TextRange.Characters(3, 1).BoundLeft
    End With
    

    坐标以点的形式返回。听起来你已经掌握了将屏幕坐标转换为PPT坐标的方法。

    这基本上就是我必须要做的(迭代文本框中的字符,获取它们的边界,并确定哪个最接近点击的坐标)。很高兴知道这是最好的方法。谢谢