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

Ответить
Аватара пользователя
---Zak---

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

Сообщение ---Zak--- »

День добрый... Подскажите плиз куда копать - ситуация следующая:

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



Нашел похожую тему:
[решено] Остановить Func нажатием на кнопку...
, но там ставиться форма и кнопка на ней висит... поковыряв ее - ничего не получилось... сижу ломаю голову до сих пор. Меню создается и файл читается, но при выборе (в данном примере) блокнота - он не открывается... и выход не срабатывает.



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




читать дальше »




Код:

Код: Выделить всё

#NoTrayIcon 
#include  
$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   ;==>
Аватара пользователя
madmasles

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

Сообщение madmasles »

---Zak---,

Честно говоря, я не совсем понял, что Вам надо, но попробуйте так, у меня работает:
читать дальше »




Код:

Код: Выделить всё

#NoTrayIcon
#include 
$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
Аватара пользователя
---Zak---

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

Сообщение ---Zak--- »

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



Необходимо создать программу, которая висит в трее и при нажатии правой кнопкой по ней - вылезает меню. Допустим запуск блокнота и выход.

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



Ну можно сделать по другому (я уже переделаю под себя)

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

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

Сообщение madmasles »

---Zak---,

Я поменял код в своем предыдущем сообщении. У меня обе функции работают. Если Вам надо запускать функции с разным интервалом, то посмотрите
[решено] Как закрыть ToolTip?
.
Аватара пользователя
---Zak---

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

Сообщение ---Zak--- »

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



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

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

Сообщение Creat0R »

---Zak---,

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




Цитата:



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



Переименуйте пожалуйста тему.
Ответить

Вернуться в «AutoIt»