Что нового

Работа с интерфейсом Windows

Reimcore

Новичок
Сообщения
21
Репутация
0
Только начинаю изучать AutoIt. Для того чтобы разобраться - пишу для себя простые примеры.
Например, очистка корзины Windows
Код:
include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Корзина", 357, 180, 375, 252)
$Button1 = GUICtrlCreateButton("Очистить", 136, 16, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
			
		Case $Button1
			Run ("explorer ::{645FF040-5081-101B-9F08-00AA002F954E}")
			WinWait ("Корзина")
			
			
			
	EndSwitch
WEnd


И вот на этом я остановился... Как нажать например "Очистить корзину"? Извините за нубские вопросы...
 
Автор
R

Reimcore

Новичок
Сообщения
21
Репутация
0
InnI сказал(а):
Reimcore
Очистить корзину
Код:
FileRecycleEmpty()

Мне необходимо знать именно принцип работы с инерфейсом, а не короткие команды) как вариант - поиск текста/картинки и последующее нажатие на них. Если нету варианта именно работы с самим инерфейсом
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Reimcore
принцип работы с инерфейсом
Смотря что вы подразумеваете под этим понятием. Если элементы ввода и управления, то Описание функций раздела "Управление элементами"

А ещё лучше скачайте русскую справку и ознакомьтесь с функционалом AutoIt: Развитие русской справки
 
Автор
R

Reimcore

Новичок
Сообщения
21
Репутация
0
InnI сказал(а):
Reimcore
принцип работы с инерфейсом
Смотря что вы подразумеваете под этим понятием. Если элементы ввода и управления, то Описание функций раздела "Управление элементами"

А ещё лучше скачайте русскую справку и ознакомьтесь с функционалом AutoIt: Развитие русской справки

Как допустим нажать в "Блокноте" меню "Вид"? Для этих меню нет ID в Windows info... просто кликом по определенной области - не вариант, ведь может быть запущен и сдвинут/растянут сам блокнот...
 

Вложения

  • Безымянный.JPG
    Безымянный.JPG
    9.8 КБ · Просмотры: 7

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Reimcore
нажать в "Блокноте" меню "Вид"
Код:
WinMenuSelectItem("[class:Notepad]", "", "&Вид", "&Строка состояния")


Для этих меню нет ID в Windows info
Прежде, чем пытаться понять принципы работы с интерфейсами, вам бы нужно разобраться в элементах интерфейса. Работа с меню, кнопками, полями ввода, панелями - подразумевают разные "принципы". Даже панель инструментов и панель статуса имеют разный функционал доступа к собственным элементам.
 
Автор
R

Reimcore

Новичок
Сообщения
21
Репутация
0
InnI сказал(а):
Reimcore
нажать в "Блокноте" меню "Вид"
Код:
WinMenuSelectItem("[class:Notepad]", "", "&Вид", "&Строка состояния")


Для этих меню нет ID в Windows info
Прежде, чем пытаться понять принципы работы с интерфейсами, вам бы нужно разобраться в элементах интерфейса. Работа с меню, кнопками, полями ввода, панелями - подразумевают разные "принципы". Даже панель инструментов и панель статуса имеют разный функционал доступа к собственным элементам.


Подскажите пожалуйста, где ошибка?

Код:
run("explorer.exe")
WinWait("explorer.exe")
$hit = ControlGetHandle ( "Мои документы", "","[CLASS:SysTreeView32; INSTANCE:1]")
ControlTreeView("Мои документы","",$hit,"Select", "Мой компьютер")


Т.е. я хочу чтобы запустив explorer.ехе скрипт выбирал пункт "Мой компьютер", но этого не происходит...
 

Вложения

  • Безымянный.JPG
    Безымянный.JPG
    38.7 КБ · Просмотры: 4

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Reimcore
все равно не выбирает
Читайте справку по ControlTreeView()
Код:
ControlTreeView("Мои документы", "", $hit, "Select", "Рабочий стол|Мой компьютер")
ControlTreeView("Мои документы", "", $hit, "Select", "#0|Мой компьютер")
 
Автор
R

Reimcore

Новичок
Сообщения
21
Репутация
0
InnI сказал(а):
Reimcore
все равно не выбирает
Читайте справку по ControlTreeView()
Код:
ControlTreeView("Мои документы", "", $hit, "Select", "Рабочий стол|Мой компьютер")
ControlTreeView("Мои документы", "", $hit, "Select", "#0|Мой компьютер")

справку читал... но некоторые моменты до сих пор не понятны. с Вашим кодом опять же, запускается exlorer.exe, но ничего не происходит... пробовал через ControlClick, тоже не работает. Нужно чтобы скрипт нажал на "Мой компьютер", но никаких действий нет, ошибок тоже нет.

Код:
Run("Explorer.exe")
WinActivate("Мои документы")
Sleep(1000)
ControlClick("Мои документы", "", "[CLASS:TreeView32; TEXT:Мой компьютер; INSTANCE:1]")
 

Вложения

  • Безымянный.JPG
    Безымянный.JPG
    39.1 КБ · Просмотры: 8

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Reimcore
Проверил на русской WinXP - всё работает
Код:
Run("explorer.exe")
WinWaitActive("Мои документы")
$hit = ControlGetHandle("Мои документы", "", "[CLASS:SysTreeView32; INSTANCE:1]")
ControlTreeView("Мои документы", "", $hit, "Select", "#0|Мой компьютер")


"[CLASS:TreeView32; TEXT:Мой компьютер; INSTANCE:1]"
Запустите Au3Info, перетащите мишень на дерево. В Au3Info перейдите на вкладку "Control". Вы видите, что параметр "Text" пустой? Так что же вы подставляете "Мой компьютер"? Поймите, вы видите одно, а AutoIt - другое. И не всегда ваши взгляды совпадают.
 
Автор
R

Reimcore

Новичок
Сообщения
21
Репутация
0
InnI сказал(а):
Reimcore
Проверил на русской WinXP - всё работает
Код:
Run("explorer.exe")
WinWaitActive("Мои документы")
$hit = ControlGetHandle("Мои документы", "", "[CLASS:SysTreeView32; INSTANCE:1]")
ControlTreeView("Мои документы", "", $hit, "Select", "#0|Мой компьютер")


"[CLASS:TreeView32; TEXT:Мой компьютер; INSTANCE:1]"
Запустите Au3Info, перетащите мишень на дерево. В Au3Info перейдите на вкладку "Control". Вы видите, что параметр "Text" пустой? Так что же вы подставляете "Мой компьютер"? Поймите, вы видите одно, а AutoIt - другое. И не всегда ваши взгляды совпадают.

Прошу прощения за свои вопросы, но никак не могу одолеть...
Мне необходимо чтобы скрипт именно "нажимал" на пункт "Компьютер", что только не побывал - никак.

Код:
Run("explorer.exe")
WinWaitActive("Библиотеки")
Sleep(3000)
$hit = ControlGetHandle("Библиотеки", "", "[CLASS:SysTreeView32; INSTANCE:1]")
ControlTreeView("Библиотеки", "", $hit, "Select", "#0|Компьютер")
 

Вложения

  • shot013.jpg
    shot013.jpg
    90.8 КБ · Просмотры: 4
  • shot014.jpg
    shot014.jpg
    99.1 КБ · Просмотры: 4

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Reimcore
"нажимал" на пункт "Компьютер"
Код:
#include <GuiTreeView.au3>

Run("explorer.exe")

$hWnd = WinWaitActive("[class:CabinetWClass]")
$hTV = ControlGetHandle($hWnd, "", "SysTreeView321")
$hItem = _GUICtrlTreeView_FindItem($hTV, "Компьютер")
_GUICtrlTreeView_ClickItem($hTV, $hItem)
 
Автор
R

Reimcore

Новичок
Сообщения
21
Репутация
0
InnI сказал(а):
Reimcore
"нажимал" на пункт "Компьютер"
Код:
#include <GuiTreeView.au3>

Run("explorer.exe")

$hWnd = WinWaitActive("[class:CabinetWClass]")
$hTV = ControlGetHandle($hWnd, "", "SysTreeView321")
$hItem = _GUICtrlTreeView_FindItem($hTV, "Компьютер")
_GUICtrlTreeView_ClickItem($hTV, $hItem)

Даже если в Вашем коде убрать единичку в SysTreeView321, то происходит только запуск окна, но нужный пункт не нажимается...
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Если у вас Win7 x64, попробуйте запустить через Au3Info_x64.exe (кликнуть правой кнопкой на файле скрипта - выбрать соответствующий пункт меню).
 
Автор
R

Reimcore

Новичок
Сообщения
21
Репутация
0
InnI сказал(а):
Если у вас Win7 x64, попробуйте запустить через Au3Info_x64.exe (кликнуть правой кнопкой на файле скрипта - выбрать соответствующий пункт меню).

все равно не работает... я не знаю уже что может быть...


Добавлено:
Сообщение автоматически объединено:

InnI сказал(а):
Если у вас Win7 x64, попробуйте запустить через Au3Info_x64.exe (кликнуть правой кнопкой на файле скрипта - выбрать соответствующий пункт меню).

Нет, все работает!) Огромное спасибо Вам за помощь)))
 
Верх