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

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

Ответить
Настройки темы
[решено] Независимый/паралельный запуск функции от работы скрипта

Новый участник


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

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


Изменения
Автор: ---Zak---
Дата: 22-09-2010
День добрый... Подскажите плиз куда копать - ситуация следующая:
Необходимо создать программу, которая будет висеть в трее и по нажатии правой кнопки выкидывать меню, то мне так же необходимо параллельно запустить функцию, которая будет читать из файла данные и если что делать изменения ручками.

Нашел похожую тему: http://forum.oszone.ru/post-1397936.html, но там ставиться форма и кнопка на ней висит... поковыряв ее - ничего не получилось... сижу ломаю голову до сих пор. Меню создается и файл читается, но при выборе (в данном примере) блокнота - он не открывается... и выход не срабатывает.

Свой кусок прилагаю ниже...

читать дальше »
Код: Выделить весь код
#NoTrayIcon 
#include <ModernMenuRaw.au3> 

$hTrayIcon = _TrayIconCreate("Proba") 
 
_TrayIconSetClick(-1, 16) 
_TrayIconSetState() 
 
$nTrayMenu = _TrayCreateContextMenu() 
 
$Notepad_TrayItem = _TrayCreateItem("Блокнот") 
_TrayItemSetIcon(-1, "notepad.exe", 0) 

_TrayCreateItem("") 
_TrayItemSetIcon(-1, "", 0) 
 
$Exit_TrayItem = _TrayCreateItem("Выход") 
_TrayItemSetIcon(-1, "shell32.dll", 28) 
 
_SetTrayIconBkColor(0xC46200) 
_SetTraySelectBkColor(0x087272) 
_SetTraySelectTextColor(0xFFFFFF) 

AdlibRegister("ReadFILE", 1000)

While 1 	
    Switch GUIGetMsg() 
	Case $Notepad_TrayItem
		AdlibUnRegister()
		Run("Notepad.exe")
        Case $Exit_TrayItem 
            _TrayIconDelete($hTrayIcon)
            ExitLoop
    EndSwitch 
WEnd

Func ReadFILE()
	$file = FileOpen("C:\proba.txt", 0)
	While 1 
		$line = FileReadLine($file)
		If @error = -1 Then ExitLoop
;~ 		........
	WEnd
	FileClose($file)
EndFunc   ;==>

Отправлено: 10:57, 17-09-2010

 

Аватара для madmasles

Ветеран


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

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


---Zak---,
Честно говоря, я не совсем понял, что Вам надо, но попробуйте так, у меня работает:
читать дальше »
Код: Выделить весь код
#NoTrayIcon
#include <ModernMenuRaw.au3>
$j = 0
$bPause = True
$hTrayIcon = _TrayIconCreate("Proba")

_TrayIconSetClick(-1, 16)
_TrayIconSetState()

$nTrayMenu = _TrayCreateContextMenu()

$Pause_TrayItem = _TrayCreateItem("Пауза")
_TrayItemSetIcon(-1, "shell32.dll", 321)

_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0)

$Notepad_TrayItem = _TrayCreateItem("Блокнот")
_TrayItemSetIcon(-1, "notepad.exe", 0)

_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0)

$Exit_TrayItem = _TrayCreateItem("Выход")
_TrayItemSetIcon(-1, "shell32.dll", 28)

_TrayIconSetToolTip(-1, 'Функции работают')
_SetTrayIconBkColor(0xC46200)
_SetTraySelectBkColor(0x087272)
_SetTraySelectTextColor(0xFFFFFF)

AdlibRegister("ReadFILE", 1000)
AdlibRegister("_MyPing", 1000)
While 1
    Switch GUIGetMsg()
        Case $Notepad_TrayItem
            Run("Notepad.exe офис.txt")
        Case $Pause_TrayItem
            $bPause = Not $bPause
            If $bPause Then
                AdlibRegister("ReadFILE", 1000)
                AdlibRegister("_MyPing", 1000)
                _TrayItemSetText($Pause_TrayItem, 'Пауза')
                _TrayItemSetIcon($Pause_TrayItem, "shell32.dll", 321)
                _TrayIconSetToolTip(-1, 'Функции работают')
            Else
                AdlibUnRegister("ReadFILE")
                AdlibUnRegister("_MyPing")
                _TrayItemSetText($Pause_TrayItem, 'Продолжить')
                _TrayItemSetIcon($Pause_TrayItem, "shell32.dll", 135)
                _TrayIconSetToolTip(-1, 'Пауза в работе функций')
            EndIf

        Case $Exit_TrayItem
            _TrayIconDelete($hTrayIcon)
            ExitLoop
    EndSwitch
WEnd

Func ReadFILE()
    $file = FileOpen("офис.txt", 0)
    While 1
        $line = FileReadLine($file)
        If @error = -1 Then ExitLoop
;~         ........
    WEnd
    FileClose($file)
    $j += 1
    ToolTip('Счетчик ' & $j, 0, 0)
EndFunc   ;==>ReadFILE
Func _MyPing()
    Local $iPing = Ping('google.com')
    If $iPing Then
        _TrayTip(-1, 'Ping', 'Ping google.com - ' & $iPing & ' ms' & @CRLF & $j, 0, 19)
    Else
        _TrayTip(-1, 'Ping', 'No Ping google.com - ' & $j, 0, 19)
    EndIf
EndFunc   ;==>_MyPing

Последний раз редактировалось madmasles, 17-09-2010 в 12:43. Причина: изменил код

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

Отправлено: 11:29, 17-09-2010 | #2



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

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


Новый участник


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

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


madmasles, спасибки огромное, переделаю под себя ... сейчас объясню другими словами что требуется, если интересно.

Необходимо создать программу, которая висит в трее и при нажатии правой кнопкой по ней - вылезает меню. Допустим запуск блокнота и выход.
А параллельно этому должен запускаться процесс по чтению данных из файла, который никакого отношения к меню не имеет. И чтобы не грузить ПК чтение файла запускается через некоторое время - допустим через 60 сек (в последующем время увеличим)

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

Отправлено: 11:48, 17-09-2010 | #3


Аватара для madmasles

Ветеран


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

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


---Zak---,
Я поменял код в своем предыдущем сообщении. У меня обе функции работают. Если Вам надо запускать функции с разным интервалом, то посмотрите здесь.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:47, 17-09-2010 | #4


Новый участник


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

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


Все - спс... переписал все с нуля и заработала как часы. С меня пива

Да не - все норм... у меня почему-то при чтении файла функция просто зависала и дальше не срабатывала.

Отправлено: 12:48, 17-09-2010 | #5


Аватара для Creat0R

Must AutoIt


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

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


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

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

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

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

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


Отправлено: 14:20, 17-09-2010 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] GUIGetMsg(1) - вернуть расширенную информацию о событии в виде массива. FlatX007 AutoIt 5 12-09-2009 00:21




 
Переход