Кажется, что вы неправильно подходите к проблеме, поэтому я отвечу на то, что вы спрашиваете, и на то, что вы должны спрашивать.
Прежде всего, эта строка кода недопустима и тоже не то, что вам нужно. Вы хотите автоматизировать окно проводника, и RunWait
ожидает завершения программы. Кроме того, вы хотите, чтобы эти элементы были строками, этот код никогда не будет работать.
Поиск предмета в проводнике
Окно проводника - это просто просмотр списка, поэтому вы можете использовать обычные сообщения просмотра списка, чтобы найти координаты элемента. Это проще всего сделать с помощью библиотеки GUIistView от AutoIt:
#include<GUIListView.au3>
Local $filepath = "D:\test.txt"
Local $iPid = Run("explorer.exe /n,/e,/select," & $filepath)
ProcessWait($iPid)
Sleep(1000)
Local $hList = ControlGetHandle("[CLASS:CabinetWClass]", "", "[CLASS:SysListView32; INSTANCE:1]")
Local $aClient = WinGetPos($hList)
Local $aPos = _GUICtrlListView_GetItemPosition($hList, _GUICtrlListView_GetSelectedIndices($hList))
MouseClick("Right", $aClient[0] + $aPos[0] + 4, $aClient[1] + $aPos[1] + 4)
Как уже упоминалось, отправка клавиши меню, безусловно, является лучшим способом, чем необходимость перемещать мышь.
Выполнение подпункта напрямую
Вот как это должно быть сделано. В идеале вам вообще не нужно открывать окно проводника, а все можно автоматизировать в фоновом режиме. Это всегда должно быть тем, чего вы хотите достичь, так как AutoIt более чем способен в большинстве случаев. Все зависит от того, на какой предмет вы хотите нажать. Если это один из первых пунктов, открывающих файл в различных программах, то это так же просто, как:
- Используя
ShellExecute
, установите для параметра глагола все, что вы хотите сделать.
- Проверка реестра, чтобы найти точную командную строку, используемую программой. Для этого вам нужно поискать в
HKCR\.ext
, где ext
- расширение файла, значением по умолчанию будет имя другого ключа в HKCR, у которого есть действия и значок, связанный с типом файла. Это довольно хорошо задокументировано в Интернете, так что погуглите.
Если действие не является одним из действий программы (поэтому оно встроено в проводник), то оно немного сложнее. Обычно лучшим способом будет посмотреть диспетчер задач при запуске программы и посмотреть, что она запускает. Другие вещи могут быть найдены в Интернете, например (не) молнии. Такие действия, как копирование, удаление, переименование, создание ярлыка, отправка ... Все они могут быть выполнены непосредственно из AutoIt с помощью различных функций File *.
Имея больше информации, можно было бы оказать вам более конкретную помощь.