Что нового

Как активировать окно чтобы нажать на кнопку

Димон

Новичок
Сообщения
42
Репутация
0
Помогите разобраться чем и как нажать в окошко да, если в окне три окошка-да,нет и отминить.
Прежде всего, я читал функцию
Send ( "keys" [, flag] ) .Скорее всего что ею, но как оприделено нажать на да? Если активное нет?
Координаты мыши вероятно тоже не пойдут. Видь это наверно координаты экрана? А окно где хочеш может выскочить- ливее и правее.
Третий час, читаю функции аутоит, так много всего..
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Помогите разобраться чем нажать

Димон [?]
Прежде всего, я читал функцию
Прежде всего нужно было читать правила форума...

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Помогите разобраться чем нажать" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Администратор.
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
Re: Как активировать окно что б нажать

Код:
ControlClick()

Отлично сработает, если установить систему координат относительно клиентской области твоего окна
Код:
Opt("PixelCoordMode", 2)
 
Автор
Д

Димон

Новичок
Сообщения
42
Репутация
0
Re: Как активировать окно что б нажать

Спасибо! А вот так- что тут не так, в этих строках? По замыслу При сработке тут верхней строки, появляется то самое окно, в котором я и пытаюсь нажать так
Код:
Send("!n")
ControlClick ( "Блокнот", "&Да", CLASS:Button )


Что-то собщает по-английски.
 

Mur

Осваивающий
Сообщения
132
Репутация
32
Re: Как активировать окно что б нажать

Он тебе сообщает, что ты пренебрёг моим советом прочитать описание функций.
Например"
Ты решил удалить любой файл, а с помощью встроенных инструментов, про которые ты уже спрашивал, можешь узнать всё об окне с которым собираешься работать.

Получаешь окошечко с "да" и "нет", этим же инструментом (Autoit window info),
получаешь информацию об этих кнопках, о самом окне и т.д.
функции которые пригодятся - ниже. Читай их описание и примеры.
Код:
ControlClick()
WinWaitActive()
Чтобы прочитать их описание, просто нажми по ним. По каждой из них. Внизу страницы примеры.
 
Автор
Д

Димон

Новичок
Сообщения
42
Репутация
0
Re: Как активировать окно что б нажать

Ну почему же. Читаю. Щас, может что-то спрошу.


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

Что же таки не так в моем примере? Я скопировал оследнюю функцию из справки, и вписал, вместо слов, из аутоита-инфо.

Задать координаты- а как вписать их в ControlClick() вместо икса-игрека?


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

А. вероятно координаты будут нолями, я же их к самому окну привязывал!


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

Дописался до следующего

Код:
Send("!n")
WinWaitActive("Блокнот","&Да")
Opt("PixelCoordMode", 2)
ControlClick ( "Блокнот", "&Да" , CLASS:Button [, [, 1 [, 0 [, 0]]]] )



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

>>>> Window <<<<
Title: Блокнот
Class: #32770

>>> Control <<<<
Class: Button
Instance: 1

>>>> Visible Text <<<<
&Да
&Нет
Отмена
Текст в файле Безымянный был изменен.

Сохранить изменения?
 

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
Код:
Opt("PixelCoordMode", 2)		;Чтение пикселей внутри клиентской части окна
Opt("MouseCoordMode", 2)		;Координаты мыши внутри клиентской части окна


Дальше, не важно где появится окошко, все координаты будут считываться именно внутри этого окна главное в Window Info выставить что б брал координаты с "Client"

http://clip2net.com/s/51FQKh
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Димон
Вот еще один примерный способ
Код:
Run("notepad.exe");запускаем Блокнот
$hWnd = WinWait("[CLASS:Notepad]", "", 5);ждем появления его окна
ControlSend($hWnd, "", "Edit1", "Эта строка выслана в элемент Edit");вводим некий текст
WinClose($hWnd);закрываем Блокнот
WinWait($hWnd, "[CLASS:Button; INSTANCE:1]", 5);ждем появления окна о сохранении
ControlClick ("Блокнот", "&Да", "[CLASS:Button; INSTANCE:1]");жмем на кнопку "Да"
 
Автор
Д

Димон

Новичок
Сообщения
42
Репутация
0
Спасибо! Дело в том, что я как раз разбираю, как работают эти функции аутоит.
Просто читая справку, ничиго не выучиш. Она большущая и тижолая.
Я ее читаю и пробую, н не получается- внимательно читаю снова... Пытаюсь понять ошибки. Это нипросто.

Щас ваш пример разбиру!!


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

Да!!!!!!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Yuriy [?]
Вот еще один примерный способ
Так надежнее.
Код:
$iPID = Run('notepad.exe');запускаем Блокнот
$hWnd = WinWait('[CLASS:Notepad]', '', 3);ждем появления его окна
If WinGetProcess($hWnd) <> $iPID Then Exit 13
ControlSend($hWnd, '', 'Edit1', 'Эта строка выслана в элемент Edit');вводим некий текст
WinClose($hWnd);закрываем Блокнот
Sleep(100)
$aList = WinList('[Class:#32770]')
For $i = 1 To $aList[0][0]
	If Not BitAND(WinGetState($aList[$i][1]), 2) Then ContinueLoop
	If WinGetProcess($aList[$i][1]) = $iPID Then
		ControlClick($aList[$i][1], '', '[CLASS:Button; INSTANCE:1]')
		ExitLoop
	EndIf
Next
 
Автор
Д

Димон

Новичок
Сообщения
42
Репутация
0
[CLASS:Button; INSTANCE:1] Интересно, что тут нужны квадратные скобки. По-моему, прямо, этого из справки не-видно


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

Спасибо!!!


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

Супер!!!! :smile:


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

А как сделать, что бы окно выделялось поверх других окон?
Я понимаю, что можно сменить паследовательность действий, но можно ли прямо указать?
Код:
$iPID = Run('notepad.exe');запускаем Блокнот
MsgBox(0, "Переменная ($iPID)", $iPID)
WinSetOnTop ( "Переменная ($iPID)",  1 )
$hWnd = WinWait('[CLASS:Notepad]', '', 3);ждем появления его окна
MsgBox(0, "Переменная ($hWnd)", $hWnd)
WinSetOnTop ( "Переменная ($hWnd)",  1 )



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

WinSetOnTop ( "Переменная ($iPID)", 1 ) ошиба ется- или я написал его рогато, или он там не прилипает.


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

Пример-супер!!!!!


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

А как нажать туда, где нольдевяностовосемь...
 
Верх