Войти

Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [42] 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

Maza Faka
28-08-2008, 08:23
Creat0R
Но в одной секунде 1000 мс
Привет! Да ты прав, что-то я не додумался использовать TimerInit :)

Кстати, ты куда пропал? Очень редко появляешься...

Babullika
28-08-2008, 14:21
вот лучше бы кто-то придумал способ как защитить наши скомпилированные скрипты от подобных взломов
Хм , а для защиты скомпелированных скриптов неподходят стандартные протекторы которые используют для защиты программ?

Creat0R
28-08-2008, 15:29
Maza Faka, Кстати, ты куда пропал? Очень редко появляешься... »
Курс здавал (Инструктора по настольному теннису http://creator-lab.ucoz.ru/Images/Table_Tennis.gif :)).

Babullika,
для защиты скомпелированных скриптов неподходят стандартные протекторы которые используют для защиты программ? »
Пример можно подобных протекторов?

Maza Faka
28-08-2008, 16:16
Creat0R
Курс здавал (Инструктора по настольному теннису)
:)

Babullika
28-08-2008, 21:07
Пример можно подобных протекторов?
Armadillo , Themida , ASProtect , etc ... Найти их можно на cracklab.ru и wasm.ru
Также скрипт можно допустим обрабатывать пакерами/крипторами/обфускаторами с целью затруднения анализа... сам незанимался , в теории )

Maza Faka
29-08-2008, 07:44
Также скрипт можно допустим обрабатывать пакерами/крипторами/обфускаторами с целью затруднения анализа »
Обфускатор есть в редакторе SciTE, в меню компиляции по Ctrl+F7.

трудт
30-08-2008, 03:02
Уважаемые программисты, что нужно делать если при установки программы она требует обязательной перезагрузки, как сделать так чтобы скрипт продолжил выполняться после перезагрузки, заранее спасибо...Извиняюсь если повторил тему..но найти не смог...

morgan1991
01-09-2008, 12:50
Думаю можно сделать так: пускай скрипт прямо перед перезагрузкой скопирует в папку условную какойнибудь файлик и пропишет себя в автозагрузку в реестре а после перезагрузки скрипт проверит наличие этого файла если он есть то скрипт его удалит и продолжит работу с указанного места.
Наверно примитивный способ, но я не специалист.

SyDr
01-09-2008, 21:49
Есть вариант чуть-чуть проще.
Прописать в автозапуск с параметром.
При запуске проверятся, с каким(и) параметром(и) был вызван скрипт.

трудт
03-09-2008, 00:02
в автозапуск я тоже решил нужно, а с параметром это как?

amel27
03-09-2008, 07:29
трудт

- если для автозапуска использовать ключ реестра "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx", то после перезагрузки (сразу после логона) система сама запустит прогу и удалит этот параметр из реестра;

- пример определения типа запуска скрипта (с параметром или без):If $CmdLine[0] Then
; этот кусок кода выполняется
; при запуске с любым параметром
MsgBox(0,"","Скрипт запущен с параметром")
Else
; этот кусок кода выполняется
; при запуске без параметров
MsgBox(0,"","Скрипт запущен без параметров")
EndIf

трудт
03-09-2008, 19:03
я новичок в этом деле и пока недружу с регистром, можешь подробнее написать как к нему обратиться, самы суть я понял

Maza Faka
04-09-2008, 07:24
трудт
Смотри функцию RegWrite()

ganselo
05-09-2008, 11:03
Народ хелп! я толька начал писать на AutoIT, нужна помощь.
Как сделать так чтобы после таго как я создал GUICtrlCreateButon(...) задать этой кнопки некие параметры. Я пробывал так:
GuiCtrlCreate(...) ;Создал окно
$Knopka = GUICtrlCreateButon(...) ;Создал кнопку
GUISetState(@SW_Show)
$NewWindow = GuiCtrlCreate(...) ;Это окно должно появить после таго как я нажал на кнопку
.......
.......
$GUISetState(@SW_Show)
while 1
local $msg
$msg = GuiGetMsg()
if $msg = $Knopka Then
$NewWindow
Endif
Wend

После того как я нажимаю на кнопку ни чего не происходит.
Что я делаю не так?

И ещё вопросик.
После того как я создал элемент GUICtrlCreateInput(...), мне нужно чтоб юзер ввёл в элемент Инпут какое то значение и чтоб программа могла использовать это эначение (т.е как считать, то что ввёл юзер. Это что то подобное функции Scanf() в Cи)

Сори, что не раскрасил и не привёл в норм вид текст... пишу на работе, нет возможности.

Maza Faka
05-09-2008, 11:23
ganselo

1.
#include <GuiConstantsEx.au3>

$hGUI_Main = GUICreate("Main GUI", 300, 200)

$AboutButton = GUICtrlCreateButton("About", 105, 50, 75, 23)

$hGUI_Child = GUICreate("Child GUI", 200, 100, -1, -1, -1, -1, $hGUI_Main)

GUISetState(@SW_SHOW, $hGUI_Main)

While 1
$msg = GUIGetMsg(1)
Select
Case ($msg[0] = $GUI_EVENT_CLOSE) And ($msg[1] = $hGUI_Main)
Exit
Case ($msg[0] = $GUI_EVENT_CLOSE) And ($msg[1] = $hGUI_Child)
GUISetState(@SW_ENABLE, $hGUI_Main)
GUISetState(@SW_HIDE, $hGUI_Child)
Case $msg[0] = $AboutButton
GUISetState(@SW_DISABLE, $hGUI_Main)
GUISetState(@SW_SHOW, $hGUI_Child)
EndSelect
WEnd

2.
Смотри в справке функцию GuiCtrlRead()

Сори, что не раскрасил и не привёл в норм вид текст... пишу на работе
Дык, все на работе ;)

ganselo
05-09-2008, 11:28
Дык, все на работе »
Биг спс)

ganselo
05-09-2008, 15:25
ещё вопросик. Есть функция:

Func ProcessControl()
$i=ProcessWait("Explorer.exe")=0
Do
$i=$i+1
ProcessWait("Explorer.exe")
ProcessClose("Explorer.exe")

$PID = ProcessExists("Explorer.exe")
If $PID Then
ProcessClose ($PID)
EndIf
until $i=1111111
EndFunc


И есть кнопка "START", после нажатия которой активируется функция ProcessControl().
Как сделать так чтобы после нажатия ещё одной кнопки "STOP", функция ProcessControl() заканчивала своё действие?

Иск
05-09-2008, 17:10
Начал 2 дня назад изучать автоит, все шло нормально, пока не решил сделать для программы оболочку... В общем такая проблема, не могу сделать так, что бы после нажатия кнопки "Старт" продолжалось выполнение скрипта по заданным в оболочке параметрам. Функцию кнопки "Старт" я оставил пустую, просто не знаю что туда записать. можно ли что-то сделать? Или придется весь скрипт переделать? До этого времени на оф сайте автоита искал нужную мне информацию, но сегодня он что-то не грузится,так что надеюсь на вашу помощь! Добавлю, что я не программист вообще, автоит это мой первый опыт, не судите строго :)


#include <GUIConstants.au3>
#include <Misc.au3>
#include <Fade.au3>

Opt("GUIOnEventMode", 1)
GUICreate("Test", 250, 200, 1024, 0)
GUISetBkColor(0xFFFFFF)
GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")
GUISetState(@SW_SHOW)

$tab=GUICtrlCreateTab (10,10, 230,180)

$tab2=GUICtrlCreateTabitem ("3")
GUICtrlCreateLabel ("3", 30,53,130,20)
$tab2combo=GUICtrlCreateCombo ("", 170,50,60,40)
GUICtrlSetData(-1,"40|30|20", "30") ; default 80%

$tab1=GUICtrlCreateTabitem ( "2")
GUICtrlCreateLabel ("2", 30,53,130,20)
$tab1combo=GUICtrlCreateCombo ("", 170,50,60,40)
GUICtrlSetData(-1,"70|80|90", "90") ; default 80%
$MHP=GUICtrlRead($tab1combo)

$tab0=GUICtrlCreateTabitem ("1")
GUICtrlSetState(-1,$GUI_SHOW) ; will be display first
GUICtrlCreateLabel ("X", 30,53,50,20)
GUICtrlCreateLabel ("Y", 30,103,50,20)
$tab0Start=GUICtrlCreateButton ("Save and Start", 10,150,115,20)
GUICtrlSetOnEvent(-1, "OKPressed")
$tab0Exit=GUICtrlCreateButton ("Exit", 125,150,115,20)
GUICtrlSetOnEvent(-1, "CancelPressed")
$tab01input=GUICtrlCreateInput ("X", 80,50,90,20)
$tab02input=GUICtrlCreateInput ("Y", 80,100,90,20)

GUICtrlCreateTabitem ("") ; end tabitem definition
GUISetState ()
$Acc = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "X", "")
GUICtrlSetData($tab01input, $Acc)
$Pass = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "Y", "")
GUICtrlSetData($tab02input, $Pass)

Func Write()
iniWrite(@MyDocumentsDir & "\test.ini", "Enter", "X", GUICtrlRead($tab01input))
IniWrite(@MyDocumentsDir & "\test.ini", "Enter", "Y", GUICtrlRead($tab02input))
$MHP=GUICtrlRead($tab1combo)
Select
Case $MHP= "70"
iniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "70")
Case $MHP= "80"
iniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "80")
Case $MHP= "90"
iniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "90")
EndSelect
$MHPex=GUICtrlRead($tab2combo)
Select
Case $MHPex= "20"
iniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "20")
Case $MHPex= "30"
iniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "30")
Case $MHPex= "40"
iniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "40")
EndSelect

EndFunc

While 1
Write()
Wend

Func OKPressed()


; ВОТ СЮДА ЧТО ПИСАТЬ, ЧТО БЫ ЦИКЛ ПРЕРВАТЬ И ПРОДЛЖИТЬ ГРУЗИТЬ СКРАИПТ?


EndFunc


Func CancelPressed()
Exit
EndFunc

Func SpecialEvents()


Select
Case @GUI_CTRLID = $GUI_EVENT_CLOSE
Exit

Case @GUI_CTRLID = $GUI_EVENT_MINIMIZE

Case @GUI_CTRLID = $GUI_EVENT_RESTORE

EndSelect

EndFunc

Creat0R
05-09-2008, 17:13
Как сделать так чтобы после нажатия ещё одной кнопки "STOP", функция ProcessControl() заканчивала своё действие?
Нужно в самой функции проверять (но способ ещё зависит от режима OnEvent):

#include <GuiConstants.au3>

Global $iProcCntrl_IsActive = False

$GUI = GUICreate("Test Script", 300, 200)
$Start_Button = GUICtrlCreateButton("Start", 20, 40, 60, 20)

GUISetState(@SW_SHOW, $GUI)

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Start_Button
If Not $iProcCntrl_IsActive Then
$iProcCntrl_IsActive = True
ProcessControl()
EndIf
EndSwitch
WEnd

Func ProcessControl()
$i = ProcessWait("Explorer.exe") = 0

$iOldOpt = Opt("GUIOnEventMode", 0) ;Это чтобы проверять событие нажатой кнопки (в случае испол. режима OnEvent)

Do
$i += 1
ProcessWait("Explorer.exe")
ProcessClose("Explorer.exe")

$PID = ProcessExists("Explorer.exe")
If $PID Then ProcessClose($PID)

If GUIGetMsg() = $Start_Button Then
$iProcCntrl_IsActive = False
ExitLoop
EndIf
Until $i = 1111111

Opt("GUIOnEventMode", $iOldOpt)
EndFunc

Maza Faka
05-09-2008, 17:23
ganselo
Объявляем глобальную переменную и при нажатии на кнопку стоп присваиваем ей какое нибудь значение. В цикле функции ProcessControl() проверяем значение этой переменной и, если оно соответствует нужному нам значению, выходим из функции
Global $Stop = False

Func ProcessControl()
$i=ProcessWait("Explorer.exe")=0
Do
If $Stop = True Then
$Stop = False
ExitLoop
EndIf

$i=$i+1
ProcessWait("Explorer.exe")
ProcessClose("Explorer.exe")

$PID = ProcessExists("Explorer.exe")
If $PID Then
ProcessClose ($PID)
EndIf
until $i=1111111
EndFunc




© OSzone.net 2001-2012