Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как получить данные из элемента ThunderRT6TextBox в ini-файл (http://forum.oszone.net/showthread.php?t=169856)

aktivizion 11-03-2010 21:43 1366494

[решено] Как получить данные из элемента ThunderRT6TextBox в ini-файл
 
Вопрос вот вчем:
имееться программа, в ней есть строки с текстом, у каждой строки есть какбы свой id
вот пример:
Код:

>>>> Control <<<<
Class:        ThunderRT6TextBox
Instance:        2
ClassnameNN:        ThunderRT6TextBox2
Name:       
Advanced (Class):        [CLASS:ThunderRT6TextBox; INSTANCE:2]
ID:        15

Class:        ThunderRT6TextBox
Instance:        3
ClassnameNN:        ThunderRT6TextBox3
Name:       
Advanced (Class):        [CLASS:ThunderRT6TextBox; INSTANCE:3]
ID:        16


пример двух строк узнал через autoit windows info,

суть проблемы в том: можно ли както получить содержимое строки допустим в ini файл,
и потом взять значение из ини файла и вставить обратно

kaster 11-03-2010 22:19 1366520

там помимо информации о контролах, выше есть информаци об окне. его заголовок. он тебе понадобится.
Код:

$a = ControlGetText('Title', '', '[CLASS:ThunderRT6TextBox; INSTANCE:2]'); получение значения поля. храниться в переменной $a
ControlSetText('Title', '', '[CLASS:ThunderRT6TextBox; INSTANCE:2]', $a); вставка значения переменной $a в поле


Creat0R 11-03-2010 23:33 1366567

Предупреждение за нарушение правил форума, пункт 2.7:

Цитата:

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

aktivizion 12-03-2010 14:18 1366954

Цитата:

Цитата Creat0R
Переименуйте пожалуйста тему. »

я бы с радостью, но не хочу огорчать вас, незнаю как

aktivizion 12-03-2010 14:57 1367008

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

эта ошибка может быть вызвана тем, что в окнах находиться старый текст? или я пологаю, что
ControlSetText должен просто замещать старый на новый?

kaster 12-03-2010 15:18 1367023

aktivizion, а у тебя переменная $a объявлена? и правильное ли название заголовка окна? там какие то знаки вопроса.
и еще, нужно уметь подстраивать код под себя. а не просто копипастить.

aktivizion 12-03-2010 15:34 1367040

kaster,
название заголовка правильная, так и думал что обратите внимание
переменная $a получает значение, это я проверил через MsgBox
но эта же переменная не передаеться в совершенно идентичное окно
и на счет обьявления переменной, тоесть?

kaster 12-03-2010 16:26 1367074

aktivizion, предоставь код того, как ты это делаешь

aktivizion 12-03-2010 16:32 1367080

kaster,
вроде немного разобрался, добавил global $a и так далее, вроде начал на половину работать, скрип? ну могу прикрепить,
только разберусь как весь скрип зацепить

kaster 12-03-2010 16:35 1367082

aktivizion, ну если у тебя переменные используются в разных пространствах имен, то конечно даже называясь одинаково будут отличаться по значению. к примеру если ты присваиваешь значение переменной в одной функции, а ее значение пытаешься использовать в другой.
Цитата:

Цитата aktivizion
ну могу прикрепить »

дело твое. если разобрался и все работает, то мне твой код ни к чему :)

aktivizion 12-03-2010 16:43 1367088

kaster,
да, теперь точно разобрался, спасибо за помощь, напутствие, Благодарю

только не по теме, но всеже, вот чать скрипта:
читать дальше »

Func otdat()
WinWait("????? v1.0.0 ???")
Sleep(200)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:2]', $a)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:5]', $b)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:6]', $c)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:8]', $d)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:9]', $e)
Sleep(300)


когда я запускаю, данные присваиваються в окне рандомно, ну не по очереди как исправить?
просто нужно ещё после каждого присвоения жать дополнительно кнопку
командой ControlClick

странно, я вроде бы писал ещё один пост, браузер видимо играет сомною,
вопрос не по теме, да и тема совсем не такая которую разбирали, но по поводу скрипта:
вот частичка скрипта:
читать дальше »

Func otdat()
WinWait("????? v1.0.0 ???")
Sleep(200)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:2]', $a)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:5]', $b)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:6]', $c)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:8]', $d)

проблема в том что эти даные присваиваютсья в охно хаотично, рандомно, тобиш не поочереди
как сделать строгое выполнение скрипта?
просто после каждого ControlSetText нужно нажимать ещё одну кнопку
командой ControlClick,
как решить это?

Creat0R 12-03-2010 17:24 1367113

Цитата:

Цитата aktivizion
незнаю как »

При редактирований темы имеется такая возможность.

Цитата:

Цитата aktivizion
вот чать скрипта »

Который нужно как минимум заключать в теги кода.

P.S
Просмотрите справку по форуму.

aktivizion 12-03-2010 17:35 1367122

Цитата:

Цитата Creat0R
Который нужно как минимум заключать в теги кода.
P.S
Просмотрите справку по форуму. »

ну и какой же из представленных кодов использовать?
http://forum.oszone.net/misc.php?do=bbcode

всё разобрался [more]

Creat0R 12-03-2010 17:45 1367141

Цитата:

Цитата aktivizion
какой же из представленных кодов использовать? »

[code] как ни странно.

kaster 12-03-2010 17:54 1367147

aktivizion, а где ты эту функцию используешь? приведи весь код, только заключи их в теги [code]

aktivizion 12-03-2010 17:57 1367148

Код:

#include <file.au3>
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
ToolTip("F1-получить значения,  F2-отправить значения, 3-запись в ини, F10- выход"& @crlf & "4-применить,  5-сохранить" ,0,0)
$sFilePaht = "D:\79.ini"
_FileCreate($sFilePaht)
Global $a
Global $b
Global $c
Global $d
Global $e
Global $f
Global $g
Global $h
Global $i
Global $k
HotKeySet ("{f1}", "poluchit")
HotKeySet ("{f2}", "otdat")
HotKeySet ("{f3}", "ini")
HotKeySet ("{f4}", "primenit")
HotKeySet ("{f5}", "soxranit")
HotKeySet ("{f10}", "vuhod")
While 1
    Sleep(100)
WEnd
Func poluchit()
        WinWait("????? v1.0.0 ???")
$a = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:2]')
Sleep(100)
$b = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:5]')
Sleep(100)
$c = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:6]')
Sleep(100)
$d = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:8]')
Sleep(100)
$e = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:9]')
Sleep(100)
$f = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:10]')
Sleep(100)
$g = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:11]')
Sleep(100)
$h = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:12]')
Sleep(100)
$i = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:15]')
Sleep(100)
$k = ControlGetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:18]')
Sleep(200)
EndFunc
Func ini()
IniWrite ("D:\79.ini", "стиль", "id", $a)
Sleep(10)
IniWrite ("D:\79.ini", "стиль", "id2", $b)
Sleep(10)
IniWrite ("D:\79.ini", "стиль", "id3", $c)
Sleep(10)
IniWrite ("D:\79.ini", "стиль", "id4", $d)
Sleep(10)
IniWrite ("D:\79.ini", "стиль", "id5", $e)
Sleep(10)
IniWrite ("D:\79.ini", "стиль", "id6", $f)
Sleep(10)
IniWrite ("D:\79.ini", "стиль", "id7", $g)
Sleep(10)
IniWrite ("D:\79.ini", "стиль", "id8", $h)
Sleep(10)
IniWrite ("D:\79.ini", "стиль", "id9", $i)
Sleep(10)
IniWrite ("D:\79.ini", "стиль", "id10", $k)
Sleep(10)
EndFunc
Sleep(300)
Func otdat()
        WinWait("????? v1.0.0 ???")
        Sleep(200)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:2]', $a)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:5]', $b)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:6]', $c)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:8]', $d)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:9]', $e)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:10]', $f)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:11]', $g)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:12]', $h)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:15]', $i)
Sleep(300)
ControlSetText('????? v1.0.0 ???', '', '[CLASS:ThunderRT6TextBox; INSTANCE:18]', $k)
Sleep(300)
EndFunc
Func primenit()
ControlClick("????? v1.0.0 ???","??",355)
EndFunc
Func soxranit()
ControlClick("????? v1.0.0 ???","??",356)
EndFunc
Func vuhod()
        exit
EndFunc

да уж собственно и нечего вроде и ненадо, можно без строгого отношения использовать скрипт


Время: 18:50.

Время: 18:50.
© OSzone.net 2001-