【问题标题】:C++ How to get the full path of file at the IUIAutomation Level?C++ 如何在 IUIAutomation 级别获取文件的完整路径?
【发布时间】:2017-04-11 16:13:27
【问题描述】:

当我获得桌面或 Windows 资源管理器的文件的 IUIAutomationElement 时,如何获得元素的完整路径? 是否有COM接口或相关方法? 我可以使用 CurrentName 获取文件名。

【问题讨论】:

  • 请停止在新问题中多次询问同一个问题。这不是堆栈溢出的工作方式。另外,为什么您仍然需要获取所有文件对话框中选择的文件的路径?你的最终目标是什么?
  • 这个问题只是'我可以在 IUIAutomation 级别获取文件路径还是不能?'。我只是想知道这一点。这与上一个问题无关。
  • 您无法从元素本身获取全名,您必须使用包含路径的祖先(父元素)来确定它。使用检查 (msdn.microsoft.com/en-us/library/windows/desktop/dd318521.aspx) 来确定如何获得它。我认为根据您的资源管理器的配置方式,可能根本不可能。
  • 我使用了 Inspect。我查看了所有父元素,但没有关于路径的信息。你说的是“ToolbarWindow32”吗?

标签: c++ winapi mfc com automation


【解决方案1】:

有一个属性 IUIAutomationElement::CurrentProcessId (只需阅读 MSDN 文档)。

其余的可以通过stackoverflow上的另一个简单查询找到: C++ Windows - How to get process path from its PID

【讨论】:

  • 我想获取文件的路径而不是进程的路径。当文件的 IUIAutomationElement 作为文件打开对话框的项调用 CurrentProcessId 方法时,它会返回一个创建文件打开对话框的进程的进程 ID。
  • 无法获取承载 COM 对象的 DLL 或模块。考虑一下?仅仅拥有一个 vtable 加上一个指向该类的指针,您就没有机会看到谁在运行代码,即使 vtable 目标在 DLL 中,宿主也可能是 EXE 或另一个 DLL。就您需要哪些信息提出更准确的问题。
猜你喜欢
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 2016-12-06
相关资源
最近更新 更多