Когда я получаю IUIAutomationElement файла, который является обозревателем рабочего стола или Windows, как я могу получить полный путь к элементу? Есть ли интерфейс COM или метод? Я могу получить только имя файла, используя CurrentName.C++ Как получить полный путь к файлу на уровне IUIAutomation?
ответ
Есть свойство IUIAutomationElement :: CurrentProcessId (Просто прочитайте документацию MSDN).
Остальной может быть найден с другим простым запросом на StackOverflow: C++ Windows - How to get process path from its PID
Я хочу получить путь к файлу, а не процесс. Когда элемент IUIAutomationElement файла как элемент диалога открытия файла вызовет метод CurrentProcessId, он вернет идентификатор процесса процесса, создающего диалог открытия файла. – Empty
Невозможно получить DLL или модуль, на котором размещен COM-объект. Просто подумай об этом? Просто наличие vtable плюс указатель на класс не дает вам возможности узнать, кто запускает код, и даже если цели в vtable находятся в DLL, хост может быть EXE или другой DLL. Дайте более точный вопрос, для чего вам нужна информация. – xMRi
Пожалуйста, прекратите задавать тот же вопрос в новом вопросе несколько раз. Это не так, как работает переполнение стека. Кроме того, почему вам нужно получить путь к файлам, выбранным во всех диалоговых окнах файлов? Какова ваша конечная цель? – andlabs
Этот вопрос просто «Могу ли я получить путь к файлу на уровне IUIAutomation или не могу?». Мне просто интересно. Это не связано с предыдущим вопросом. – Empty
Вы не можете получить полное имя от самого элемента, вам придется определить его, используя его родословную (родительские элементы), которые содержат путь. Используйте опцию check (https://msdn.microsoft.com/en-us/library/windows/desktop/dd318521.aspx), чтобы определить, как вы можете с ней связаться. Я думаю, что в зависимости от того, как настроен ваш проводник, это может быть совсем не возможно. –