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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Friendly Pinger - нужен скрипт введения серийника (http://forum.oszone.net/showthread.php?t=146016)

Shpionus 23-07-2009 18:25 1175818

Friendly Pinger - нужен скрипт введения серийника
 
http://forum.oszone.net/thread-87579.html - описание моего инсталятора на основе уже установленной программы.
Осталось её зарегистрировать. Ввод серийника как полагается в окно регистрации программы вручную работает как положено, но как это автоматизировать? Я не силён в AutoIT, кто умеет попросил бы написать скрипт регистрации программы введением существующего серийника в окно регистрации программы.
Если есть желание сделать инсталятор как положено, с использованиеи дистрибутива, будет только лучше :) .

proxy 23-07-2009 18:33 1175826

стучи в icq, обсудим )

Creat0R 23-07-2009 23:22 1176048

proxy,
Цитата:

Цитата proxy
стучи в icq, обсудим ) »

Это можно было и в ПМ написать.

Shpionus, Обсуждение нелегального ПО на форуме запрещается (3.18).

Если это ваша преобритённая программа, и требуется вставить в поля преобретённый серийный номер, то приведите то, что отображается в AutoIt Info Tool при наведении на полях ввода.

Shpionus 24-07-2009 02:01 1176129

Где мной указано что это нелегальное ПО ? И вобще почему интересно на многих форумах запрещено его обсуждать? Ладно на второй вопрос можете не отвечать, а то скажете что я ругаюсь с модератором :(
Небыло негде указаний на нелегальность.
(приведите то, что отображается в AutoIt Info Tool при наведении на полях ввода.) я непонял о чём вы тут написали... Что такое "AutoIt Info Tool" ? И куда там что наводить надо? И вобще зачем это?

Creat0R 24-07-2009 03:07 1176150

Цитата:

Цитата Shpionus
Где мной указано что это нелегальное ПО ? »

А я не говорил что вы указывали на легальное ПО, просто подобные вопросы вызывают подозрения, вот и всё.

Цитата:

Цитата Shpionus
я непонял о чём вы тут написали... Что такое "AutoIt Info Tool" ? »

Это инструмент для получения информации элементов окон. В установленной папке аутоита это файл Au3Info.exe.

Цитата:

Цитата Shpionus
куда там что наводить надо? »

На текстовое поле куда нужно ввести данные.

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

Shpionus 24-07-2009 03:26 1176155

Цитата:

В установленной папке аутоита это файл Au3Info.exe.
Так это у меня должно быть установлено в системе что-то касающееся AutoIt ? Но у меня этого нет, где взять?
Выложить дистрибутив? Да без проблемм, куда?
А вот на счёт подробной инструкции незнаю, боюсь я её не смогу понятно написать :( Это надо думаю самому видеть. В кратце устанавливается программа, отвечаем на несколько вопросов инсталятора, после чего запускаем программу, и в меню "справка" есть пункт "Регистрация" открываем его и вписываем имя пользователя и ключ, жмём ОК и перезапускаем программу. Как ещё по пунктам всё это изложить незнаю, надо своими глазами видеть.

Creat0R 24-07-2009 05:49 1176187

Цитата:

Цитата Shpionus
Так это у меня должно быть установлено в системе что-то касающееся AutoIt ? »

:yes: :cool:

А как вы ожидаете чтобы скрипт работал? exe'шник? Ну за вас всё делать никто не будет, хоть что-то на своей стороне сделайте, а установка AutoIt'а это минимальная мера.

Цитата:

Цитата Shpionus
у меня этого нет, где взять? »

Вся нужная инфа есть тут.

Цитата:

Цитата Shpionus
Выложить дистрибутив? Да без проблемм, куда? »

Куда вам удобно, но прежде хочется узнать - сколько оно весит?

Цитата:

Цитата Shpionus
боюсь я её не смогу понятно написать »

Боятся не надо ;) - Я имел в виду со стороны пользователя, что требуется выполнить, только на автоматическом уровне.

Shpionus 24-07-2009 06:35 1176201

Дистрибутив занимает 2 мб
Архив 1,34 мб:
http://multi-up.com/120877

Au3Info.exe при наведении на поля ввода показывает следующее:

Первый рисунок соответственно первое поле ввода имени, второй рисунок второе поле ввода самого ключа:




Creat0R 24-07-2009 08:09 1176223

Shpionus, Вобщем вот что получилось (полная установка программы):

Friendly Pinger Installer Script.au3
Код:

#include <GUIMenu.au3>
#include <WindowsConstants.au3>

;Friendly Pinger installation script (by G.Sandler, a.k.a CreatoR)

#Region ============= Settings ============
Global $sUserName      = "User"
Global $sKey            = "Key"

Global $sInstall_Path  = "Default" ;Default will not change the path suggested by installer
Global $nLangSel        = 2        ;Set the language selection (2 is russian, 0 = default - english)

Global $iBlockInput    = 0        ;Block the user input during installation (1 -> block, 0 -> Do not block)
#EndRegion ==================================
;

#Region ============= Script =============
Run(@ScriptDir & "\FPinger_5_0.exe")
If @error Then Exit

If
$iBlockInput Then BlockInput(1)

;Wait for the first window
WinWait("[CLASS:obj_Form;TITLE:Friendly Pinger]")

;Click Next button
ControlClick("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_BUTTON29")

;Select "I accept the agreement"
ControlClick("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_BUTTON6")

;Click Next button
ControlClick("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_BUTTON29")

;Set the install path if neccessary
If $sInstall_Path <> "Default" Then
    ControlSetText("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_EDIT5", $sInstall_Path)
Else
    $sInstall_Path = ControlGetText("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_EDIT5")
EndIf

;Select the language
ControlFocus("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_COMBOBOX1")
ControlSend("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_COMBOBOX1", "{HOME}")
If $nLangSel > 0 Then ControlSend("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_COMBOBOX1", "{DOWN " & $nLangSel & "}")

;Click Next button
ControlClick("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_BUTTON29")
ControlClick("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_BUTTON29")

;Wait untill the installation is completed
While 1
    If WinExists("[CLASS:obj_Form;TITLE:Friendly Pinger]", "Installation complete!") Then ExitLoop

    If
WinExists("[CLASS:#32770;TITLE:Friendly Pinger]", "Old template-files are stored in") Then
        WinClose("[CLASS:#32770;TITLE:Friendly Pinger]", "Old template-files are stored in")
        WinWaitClose("[CLASS:#32770;TITLE:Friendly Pinger]", "Old template-files are stored in")
    EndIf

    Sleep(100)
WEnd

;Remove not needed(?) checkboxes
ControlCommand("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_BUTTON25", "Check")
ControlCommand("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_BUTTON26", "UnCheck")
ControlCommand("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_BUTTON27", "UnCheck")

;Click Finish button
ControlClick("[CLASS:obj_Form;TITLE:Friendly Pinger]", "", "obj_BUTTON29")

;Wait for Trial message window
WinWait("[CLASS:TToRegistryForm;TITLE:Friendly Pinger]")

;Get the button number to click
$nButton = ControlGetText("[CLASS:TToRegistryForm;TITLE:Friendly Pinger]", "", "TGroupBox1")
$nButton = Number(StringRegExpReplace($nButton, "(?i).*?(?:Nr.|№ )(\d+).*?", "\1"))

;Click the button to confirm the trial
ControlClick("[CLASS:TToRegistryForm;TITLE:Friendly Pinger]", "", "TButton" & 4-$nButton)

;Wait for main window to be active
WinWait("[CLASS:TFPingerMainForm]", "", 3)
WinActivate("[CLASS:TFPingerMainForm]")
WinWaitActive("[CLASS:TFPingerMainForm]", "", 3)

;No we click the Register item in menu
$hWnd = WinGetHandle("[CLASS:TFPingerMainForm]")

$hMenu = _GUICtrlMenu_GetMenu($hWnd)
$hHelp = _GUICtrlMenu_GetItemSubMenu($hMenu, 8) ;Help menu
$iItemID = _GUICtrlMenu_GetItemID($hHelp, 11) ;Third item from the bottom (zero-based)
;English (perhaps other as well) version have it a little bit up then in russian version

If $nLangSel <= 0 Then $iItemID = _GUICtrlMenu_GetItemID($hHelp, 10)

DllCall("User32.dll", "int", "PostMessage", "hwnd", $hWnd, "int", $WM_COMMAND, "int", $iItemID, "int", 0)

WinWaitActive("[CLASS:TRegisterForm;TITLE:Registration]", "", 3)

;If the registration window showed up, set the user name and the key, and then restart
If WinExists("[CLASS:TRegisterForm;TITLE:Registration]") Then
    ControlSetText("[CLASS:TRegisterForm]", "", "TEdit1", $sUserName)
    ControlSetText("[CLASS:TRegisterForm]", "", "TEdit2", $sKey)
    ControlClick("[CLASS:TRegisterForm]", "", "TBitBtn3")

    ;Restart the program
    WinClose($hWnd)
    WinWaitClose($hWnd)

    Run($sInstall_Path & "\FPinger.exe")
EndIf

If
$iBlockInput Then BlockInput(0)
#EndRegion ============= Script =============
;



P.S
Я обычно не занимаюсь подобными скриптами, но у меня просто было пару свободных минут :coffee:

Shpionus 24-07-2009 14:31 1176531

Хм, неожидал такой оперативности, спасибо!
А куда собственно ему серийник вписывать? Чтобы он его сам ввёл? И если это полная установка то как узнать на какие там кнопки он жмёт? Может я бы изменить хотел некоторые параметры установки :)

Creat0R 24-07-2009 16:47 1176675

Цитата:

Цитата Shpionus
куда собственно ему серийник вписывать? »

Читайте комментарии в скрипте, там всё должно быть понятно.

Цитата:

Цитата Shpionus
как узнать на какие там кнопки он жмёт? Может я бы изменить хотел некоторые параметры установки »

А для этого уже читайте справку по AutoIt - для каждой функции смотрите действия и описания, и изменяйте что нужно.

Shpionus 08-10-2009 21:21 1237947

При запуске того скрипта:

Код:

Autoit3.exe FPinger_5_0.au3
Он пишет: Eror reading the file: GUIMenu.au3

Удалил первые две строки из файла скрипта:

#include <GUIMenu.au3>
#include <WindowsConstants.au3>

Теперь начало писать следующее:

Sp01LeR 08-10-2009 23:13 1238005

Цитата:

Удалил первые две строки из файла скрипта
Уважаемый, а у вас когда в Виндовсе ошибки выскакивают - Вы папку C:\Windows\ удаляете? :)

Shpionus 08-10-2009 23:45 1238015

Непонял вопроса? А вы уважаемый сам то тот скрипт открывали? И смотрели КАКИЕ строки я удалил?

Sp01LeR 09-10-2009 00:06 1238022

Не открывал и не смотрел - мне и так все понятно.
Только не могу понять, почему ошибка с StringRegExpReplace - возможно что там одна из букв "a", "c", "x", "p" или "e" набраны в русской раскладке...

Creat0R 09-10-2009 00:20 1238027

Shpionus, Судя по всему у вас устаревшая версия AutoIt, обновите до 3.3.0.0.

Цитата:

Цитата Shpionus
Удалил первые две строки из файла скрипта:
#include <GUIMenu.au3>
#include <WindowsConstants.au3>
Теперь начало писать следующее »

Этого не должно быть, ошибка с другой функцией (_GUICtrMenu...).

Цитата:

Цитата Sp01LeR
не могу понять, почему ошибка с StringRegExpReplace - возможно что там одна из букв "a", "c", "x", "p" или "e" набраны в русской раскладке »

Нет, ошибка связана с неопознанной функцией.

Shpionus 09-10-2009 01:11 1238053

Да действительно была старая версия :)
Обновил до 3.3.0.0
Те две строки всёравно приходится удалять.
Без них картина такая:

Creat0R 09-10-2009 01:13 1238056

Цитата:

Цитата Sp01LeR
не могу понять, почему ошибка с StringRegExpReplace - возможно что там одна из букв "a", "c", "x", "p" или "e" набраны в русской раскладке »

Нет, ошибка связана с неопознанной функцией.

Цитата:

Цитата Shpionus
Те две строки всёравно приходится удалять.
Без них картина такая »

Так если вы их удалите, как срипт будет знать о существовании функции _GUICtrlMenu...? Там же логика подсказывает (см. имя файла), что эти файлы содержат нужные скрипту функции.

Shpionus 09-10-2009 03:32 1238110

Так вот оно что! Мне надо было положить рядом с файлами
FPinger_5_0.exe
FPinger_5_0.au3
FPinger_5_0.bat
AutoIt3.exe

Ещё все файлы из папки C:\Program Files\AutoIt3\Include !
Вот после этого всё заработало и с теми первыми строками :)

Дело всё в том что я несколько раз брал скрипты написаные пользователем "Sanja Alone" и они требовали рядом с собой кроме дистрибутива программы которую надо ставить, только AutoIt3.exe ! И вот по этому примеру я и пытался испытать ваш скрипт, а он как оказалось использует кучу родных дополнений...

Creat0R 09-10-2009 04:01 1238114

Цитата:

Цитата Shpionus
Мне надо было положить рядом с файлами »

Да нет же, нужно было просто скомпилировать скрипт, и всё само поставилось бы как есть.
Я полагаю это дело проверяется на системе без AutoIt? ну или он установлен некорректно.

Shpionus 09-10-2009 05:11 1238132

Что значит скомплировать? Да, это всё проверяется на чистой тест системе. И всё это в последствии предполагается запаковывать WinRAR sfx.

Creat0R 09-10-2009 05:18 1238135

Цитата:

Цитата Shpionus
Что значит скомплировать? »

Это значит превратить au3 в exe :) В папке с AutoIt есть «Aut2Exe\Aut2exe.exe», вот с его помощью нужно компилировать скрипт прежде чем использовать его на чистой системе.

Если не получится могу выложить готовый exe'шник.

Shpionus 09-10-2009 06:37 1238143

Если уже вы готовы ещё помоч на практике то там в конце работы скрипта появляется предложение запустить онлайн демонстрацию, было бы неплохо нажать там кнопку "Нет" после чего выйти из программы :) Я собирался как и раньше запаковывать FPinger_5_0.au3, AutoIt3.exe ну и ээээ ту кучу файлов :) в RAR sfx. Точнее я наверное и буду это делать. Но если вы сделаете то что я написал, то можно будет и скомпилировать :) Был бы премного благодарен.

Creat0R 09-10-2009 07:18 1238156

Вложений: 1
Shpionus,
Не нужно ничего паковать, вот вам архив (прикреплён), из него вам нужны два файла, «Friendly Pinger installation script.exe» и «Friendly Pinger installation script.ini». Ini-файл содержит настройки установщика.

Sp01LeR 09-10-2009 14:18 1238474

Цитата:

Нет, ошибка связана с неопознанной функцией.
Ну так и я про то же - StringRegExpReplace станд. функция AutoIt (не UDF).

Вот этот пример будет работать на чистой системе(нужен только AutoIt3.exe для запуска скрипта):

Код:

$n=StringRegExpReplace("abc12345efg","(.[0-9]*)","\1")
MsgBox(0, "", $n)


Creat0R 09-10-2009 17:11 1238664

Sp01LeR, Я про UDF функцию, а то что было указано на StringRegExp это бага в AutoIt3.exe (определение нахождения строки с ошибкой), у меня это тоже уже было как то.

Sp01LeR 09-10-2009 17:34 1238680

Цитата:

это бага в AutoIt3.exe
Спасибо, в будущем буду учитывать это...

Shpionus 14-10-2009 00:48 1242273

1) Скрипт не закрывает установленную и запущенную программу :( А это нужно!
2) При запуске на системе с уже установленным пингером, скрпит зависает (мыш не движется)

Надо первое сделать закрытие главного окна программы, когда в конце работы скрипта оно оказывается в фокусе, и второе как-то определять установлен пинегр уже или нет, и если да, то желательно бы запускать ПЕРЕУСТАНОВКУ.

Это всё можно реализовать? :)

Creat0R 14-10-2009 01:01 1242278

Цитата:

Цитата Shpionus
Скрипт не закрывает установленную и запущенную программу А это нужно! »

А что ещё кроме этого нужно? или мне дальше нужно гадать?

Цитата:

Цитата Shpionus
При запуске на системе с уже установленным пингером, скрпит зависает (мыш не движется) »

У меня всё отрабатывает нормально...

Цитата:

Цитата Shpionus
как-то определять установлен пинегр уже или нет, и если да, то желательно бы запускать ПЕРЕУСТАНОВКУ. »

А это ещё отдельный файл? Думаю в реестре можно проверять.

P.S
Я не подписывался на поддержку дальнейшей разработки этого скрипта, сегодня у вас две простые задачи, а завтра ещё пару. Решение этому есть, и оно мне кажется вам не понравится - учите основы аутоита. Ну или милости просим сделать заказ скрипта тут (указав детали с этой темы).

Цитата:

Это всё можно реализовать?
Это и намного больше - да.

Shpionus 14-10-2009 02:22 1242320

Ну я пишу по мере выявления, я только вот сегодня добрался проверить ваш компилированный скрипт.
Да нет там отдельных файлов, надо просто попробовать запустить вручную повторно установку поверх, и посмотреть какие там сообщения возникают.
Причём тут неподписывались? Нехотите этим заниматся, так и скажите. Тема будет закрыта :(

Creat0R 14-10-2009 02:54 1242331

Цитата:

Цитата Shpionus
Причём тут неподписывались? Нехотите этим заниматся, так и скажите. »

Дальше нет, не хочу (уже тем более).

P.S
Присмотревшись к скрипту, вы могли бы сами догадаться как там далее убирать окна и как делать прочие задачи.


Время: 04:03.

Время: 04:03.
© OSzone.net 2001-