Что нового

Вставить дату в поле браузера

DOZOMIGAMIUS

Новичок
Сообщения
17
Репутация
0
Тут такая проблемма, в браузере надо поставить дату, Ctrl+V - в форме куда вставляется не срабатывает... Дата копируется из экселя...

может есть способ эмуляции нажатия цифр из буфера? ну, или есть другие идеи?
помогите - буду признателен...
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
DOZOMIGAMIUS
А какой браузер используется?
Также нужна ссылка на страницу с формой...
 
Автор
D

DOZOMIGAMIUS

Новичок
Сообщения
17
Репутация
0
не вставляется не из за того что раскладка не та, просто форма такая... в ручную тоже не работает...



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

ссылку дать не могу т.к. нужен сертификат... а браузер - Avant, но не в нем дело, на других тоже пробывал...

простое поле даты... и всё...
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
DOZOMIGAMIUS
Avant Browser построен на движке MIE, поэтому можно попробовать использовать функцию:

Код:
#include <IE.au3>
_IEFormElementSetValue()
 
Автор
D

DOZOMIGAMIUS

Новичок
Сообщения
17
Репутация
0
snoitaleR сказал(а):
DOZOMIGAMIUS
Avant Browser построен на движке MIE, поэтому можно попробовать использовать функцию:

Код:
#include <IE.au3>
_IEFormElementSetValue()
:-[ - а с чем ее кушать :(
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
DOZOMIGAMIUS
Без исходного кода страницы я не могу попытаться составить скрипт...
Привожу пример использования функции из справки по AUTOIT...

Код:
; *******************************************************
; Example 1 - Open a browser with the form example, set the value of a text form element
; *******************************************************
;
#include <IE.au3>
$oIE = _IE_Example ("form")
$oForm = _IEFormGetObjByName ($oIE, "ExampleForm")
$oText = _IEFormElementGetObjByName ($oForm, "textExample")
_IEFormElementSetValue ($oText, "Hey! This works!")

; *******************************************************
; Example 2 - Get a reference to a specific form element and set its value.
;               In this case, submit a query to the Google search engine
; *******************************************************
;
#include <IE.au3>
$oIE = _IECreate ("http://www.google.com")
$oForm = _IEFormGetObjByName ($oIE, "f")
$oQuery = _IEFormElementGetObjByName ($oForm, "q")
_IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
_IEFormSubmit ($oForm)

; *******************************************************
; Example 3 - Login to Hotmail
; *******************************************************
;
#include <IE.au3>
; Create a browser window and navigate to hotmail
$oIE = _IECreate ("http://www.hotmail.com")

; get pointers to the login form and username, password and signin fields
$o_form = _IEFormGetObjByName ($oIE, "f1")
$o_login = _IEFormElementGetObjByName ($o_form, "login")
$o_password = _IEFormElementGetObjByName ($o_form, "passwd")
$o_signin = _IEFormElementGetObjByName ($o_form, "SI")

$username = "your username here"
$password = "your password here"

; Set field values and submit the form
_IEFormElementSetValue ($o_login, $username)
_IEFormElementSetValue ($o_password, $password)
_IEAction ($o_signin, "click")

; *******************************************************
; Example 4 - Set the value of an INPUT TYPE=FILE element
;               (security restrictions prevent using _IEFormElementSetValue)
; *******************************************************
;
#include <IE.au3>

$oIE = _IE_Example("form")
$oForm = _IEFormGetObjByName($oIE, "ExampleForm")
$oInputFile = _IEFormElementGetObjByName($oForm, "fileExample")

; Assign input focus to the field and then send the text string
_IEAction($oInputFile, "focus")
Send("C:\myfile.txt")

; *******************************************************
; Example 5 - Set the value of an INPUT TYPE=FILE element
;               Same as previous example, but with invisible window
;               (security restrictions prevent using _IEFormElementSetValue)
; *******************************************************
;
#include <IE.au3>

$oIE = _IE_Example("form")

; Hide the browser window to demonstrate sending text to invisible window
_IEAction($oIE, "invisible")

$oForm = _IEFormGetObjByName($oIE, "ExampleForm")
$oInputFile = _IEFormElementGetObjByName($oForm, "fileExample")

; Assign input focus to the field and then send the text string
_IEAction($oInputFile, "focus")
$hIE = _IEPropertyGet($oIE, "hwnd")
ControlSend($hIE, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "C:\myfile.txt")

MsgBox(0, "Success", "Value set to C:\myfile.txt")
_IEAction($oIE, "visible")
 
Автор
D

DOZOMIGAMIUS

Новичок
Сообщения
17
Репутация
0
признаюсь, В автоит не асс, вообще есть возможность решения данной проблемы?
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
DOZOMIGAMIUS
OffTopic:

Я думаю, есть смысл подождать, пока на этот вопрос ответит Garrett...
 
Автор
D

DOZOMIGAMIUS

Новичок
Сообщения
17
Репутация
0
скрин


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

Все действия до этого момента просто я написал в MacroMeaker, но видать протыми действиями не обойтись, нужна тяжелая артиллерия... поэтому и зашел сюда - с надеждой на помощь...
 

kosjachok

Новичок
Сообщения
30
Репутация
3
DOZOMIGAMIUS сказал(а):
ссылку дать не могу т.к. ...
тогда не помешал бы исходный код страницы, на которой расположена форма...
(на странице - правой кнопкой-исходный код(или промотр HTML кода) - выделить - скопировать - и вставить сюда под теги
Код:
[spoiler][code] скопированный код[/code][/spoiler]
)
- или как вариант - сохранить как - Веб страница только HTML - потом переименовать в тхт и выложить сюда (как вложение)...
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
DOZOMIGAMIUS
Попробуйте так:
Код:
#include <IE.au3>
$oIE = _IECreate("http://")
$oForm = _IEFormGetCollection ($oIE, 0) ; индекс тега "Form", где находится поля "Input" календаря.
$oInput = _IEFormElementGetCollection ($oForm, 0) ; индекс поля "Input"
_IEFormElementSetValue ($oInput, ClipGet()) ; вставляем из буфера обмена дату, скопированную в Excel
 
Автор
D

DOZOMIGAMIUS

Новичок
Сообщения
17
Репутация
0
Давайте попробуем понять эту тему по другому... в экселе скопировано число, допустим открыт текстовый документ(т.е. курсор находится в нужном месте и ничто указывать не надо), при нажатии комбинации кнопок, запускается скрипт кторый вставляет скопированное число, ток вставляет не нажатием CTRL+V или SHIFT+INSERT, а тупо набирает число которое было скопированно с ячейки в экселе...

я в автоит полный чайник ((( команды читаю а принцип действия не ясен...
 
Автор
D

DOZOMIGAMIUS

Новичок
Сообщения
17
Репутация
0
Войти или передать форму не получиться... скажите что сделать надо?
 
Автор
D

DOZOMIGAMIUS

Новичок
Сообщения
17
Репутация
0
по умолчанию дата стоит текущая (т.е. как в компьютере) можно сделать чонить такое чоб если кликаешь то дата в компе устанавливалась та - которую я скопировал!! во!...
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
DOZOMIGAMIUS
Вот так можно решить вашу задачу (правда решение не самое топовое ;D)
Код:
#include <IE.au3>

;~ Dim $iData	= "23.11.2011"
Dim $sTitle		= "Windows Internet Explorer"
Dim $sControl	= "[CLASS:DTPicker20WndClass; INSTANCE:1]"

;~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;~ Запускаем IE и идём на страницу где расположен ActiveX control календарь 
;~ clsid='20DD1B9E-87C4-11D1-8BE3-0000F8754DA1' [ DTPicker20WndClass1 ]
;~ IE так же уже может быть открыт, на странице, заранее.
;~ Позиция курсора выставляется на число дня автоматически при каждой загрузке.
;~ Функция также после отработки, возвращает позицию курсора на позицию дня.
;~ В А Ж Н О!
;~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;~ Не кликать по календарю мышкой и не набирать дату с клавиатуры так как я так и не 
;~ нашёл пока способа выставлять чётко фокус на позицию дня.
;~ То есть фокус может быть на позиции года, если вдруг вы кликнули мышкой по числу 
;~ года, в таком случае если воспользоваться функцией повторно, то дата введётся не верно!
;~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

_SetDataPicker($sTitle, "", $sControl, ClipGet())

Func _SetDataPicker($sWinTitle, $sWinText, $sControlID, $iData)
	Opt("WinTitleMatchMode", 2)
		Switch WinGetState($sWinTitle,$sWinText)
		Case 5
			Return SetError(2, "",MsgBox(16,"Error _SetDataPicker", "Window hiden!"))
		Case 7 Or 39 Or 23
			WinActivate($sWinTitle,$sWinText)
		Case Else
			Return SetError(1, "",MsgBox(16,"_SetDataPicker", "Window not found!"))
		EndSwitch 		
	ControlFocus($sWinTitle, $sWinText, $sControlID)
	ControlSend ($sWinTitle, $sWinText, $sControlID, $iData)
	Send('{RIGHT}')
	Opt("WinTitleMatchMode", 1)
	SetError(0)
EndFunc
 
Автор
D

DOZOMIGAMIUS

Новичок
Сообщения
17
Репутация
0
Тему можно считать решенной :IL_AutoIt_1:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Верх