Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » GUI, обработка функций вместе с ним.

Ответить
Настройки темы
GUI, обработка функций вместе с ним.

Аватара для SyDr

Старожил


Сообщения: 215
Благодарности: 62


Конфигурация

Профиль | Отправить PM | Цитировать


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

Примерная структура скрипта:
Код: Выделить весь код
;Create GUI

While 1
GUIProcess()
WEnd

Func GUIProcess()
Switch GUIGetMsg()
;...
Case $ButtonStop
$NotStop=0
EndSwitch
EndFunc

Func Some()
While 1 And $NotStop
;...
GUIProcess()
WEnd
EndFunc
Собственно вопрос, насколько это эффективно? И есть ли решение получше?
http://www.autoitscript.com/forum/in...howtopic=95510 - здесь вроде бы то, что мне надо, но к сожалению, я не понял, как этим воспользоваться

Отправлено: 12:35, 24-05-2009

 

Старожил


Сообщения: 192
Благодарности: 1

Профиль | Отправить PM | Цитировать


PHP код: Выделить весь код

while 1

Switch GUIGetMsg()
;...
Case 
$ButtonStop
     Stop
()
EndSwitch
wend

Func Stop
()
;
create GUI 2
While 1
sleep
(100)
Switch 
GUIGetMsg2()
;...
Case 
$Continue
    exitloop
()
EndSwitch
WEnd
EndFunc 

Мне кажется так можно

Отправлено: 15:40, 24-05-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата Sylver Dragon:
В связи с этим мне нужна остановка выполнения функции (но не выход из скрипта) »
Мне кажеться это можно реализовать только если основной скрипт будет 1 программа, а каждая длинная функция вторая, третья и т. д. программа. Потом запускать на выполнение нужной функции (программы) из основного скрипта, а как наладить "внутреннюю связь" между двумя прогами, чтоб можно было получать/передавать сообщения, здесь на форуме недавно обсуждалось.
Цитата Sylver Dragon:
Собственно вопрос, насколько это эффективно? »
Если твоя функция запустится на выполнение и она будет выполнятся скажем 10 минут, а в процессе работы ты нажмеш на кнопку отмены, то отменить ее выполнение по твоему примеру, не удасться пока не пройдут эти 10 минут, потом только лишь на второй круг выполнения функция не пойдет...ибо была отмена.

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:42, 24-05-2009 | #3


Аватара для SyDr

Старожил


Сообщения: 215
Благодарности: 62

Профиль | Отправить PM | Цитировать


Ну... Если бы у меня было что-то типо Sleep(n) - я бы даже не спрашивал и плюнул бы на это дело. А так, моя функция работает долго за счёт скачки файлов из интернета. Но качаю я то их в фоне. Поэтому и имею возможность при этом обрабатывать GUI.
То есть вот эта функция вызывыается достаточно часто:
Код: Выделить весь код
Func GetSourceOrFile($URL, $SourceOrFile = "Source", $PathToDownLoad = "") ; Готово
#cs ----------------------------------------------------------------------------
Готово.
Внешние связи: #include <File.au3>, переменная $AllowDownLoad для немедленного завершения и цикл обработки GUI {GUIProcess()}
Получает файл или исходный текст файла в интернете. При этом обрабатывает GUI
Возвращаемое значение: Исходный текст файла или пустая строка
#ce ----------------------------------------------------------------------------
    Local $Handle
    Local $Return = ""

    If $PathToDownLoad = "" Then $PathToDownLoad = _TempFile()
    $Handle = InetGet($URL, $PathToDownLoad, 0, 1)

    While (NOT(InetGetInfo($Handle, 2))) And $AllowDownLoad
        GUIProcess()
    WEnd

    InetClose($Handle)

    If $SourceOrFile = "Source" Then
        $Return = FileRead($PathToDownLoad)
        FileDelete($PathToDownLoad)
    EndIf

    Return $Return
EndFunc

-------

"Что мы думаем, знаем или во что верим в конце концов не так уж и важно.
Важно лишь то, что мы делаем."
Джон Раскин


Отправлено: 16:14, 24-05-2009 | #4


Старожил


Сообщения: 192
Благодарности: 1

Профиль | Отправить PM | Цитировать


моя идея подойдёт - в функции паузы создать создать такую же форму или форму с кнопкой продолжить...

Последний раз редактировалось Twix1124, 24-05-2009 в 16:58.


Отправлено: 16:38, 24-05-2009 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


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

Цитата Sylver Dragon:
здесь вроде бы то, что мне надо, но к сожалению, я не понял, как этим воспользоваться »
Насколько я понимаю, это запускает функцию из Dll'ки в отдельном участке памяти (процессе), вызвать так функцию из самого скрипта наврядли получится, разве что только если скрипт скомпилирован, и то придётся искать указатель на функцию в процессе... но память (моя ) мне подсказывает что в аутоите это невозможно...

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 18:21, 24-05-2009 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » GUI, обработка функций вместе с ним.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Использование некоторых функций AutoIt3Wrapper Gui FlatX007 AutoIt 8 08-07-2009 18:26
Не работает GUI после выхода другова GUI sashadeg AutoIt 3 15-05-2009 22:03
Перехват API функций ники Лечение систем от вредоносных программ 23 09-04-2009 11:21
Теория - Число функций n аргументов? Gamover jr Программирование и базы данных 13 30-10-2007 09:25
Java - Перегрузка функций библиотеки Win32API EvgeniyQQQ Программирование и базы данных 2 02-10-2007 14:53




 
Переход