Что нового

иконка скрипта в трее после завершения программы

Shinoby

Новичок
Сообщения
80
Репутация
2
собственно дошли руки до этого вопроса:
после того, как скрипт отрабатывает - в трее остается его иконка. у меня такая ситуация и в ХР и в W7-64.
навожу мышь на иконку и только тогда она исчезает.

так как за период отрабатывает несколько скриптов - в трее столпотворение иконок сриптов.

можно ли как то от этого избавиться?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Shinoby,
Пример такого скрипта и версия AutoIt.
 
Автор
S

Shinoby

Новичок
Сообщения
80
Репутация
2
вопрос про скрипт и версию - неожиданные.

версия 3.3.11.3 бета. скрипты большие, под 500 строк, наборы включенных библиотек - разные.

но ссылка от joiner навела на мысль. проверил и обнаружил, что все штатно завершаю через
Код:
ProcessClose($curentPID)

и это видимо считается таки ненормальным завершением.

хотя вроде как можно же вообще ничего такого не писать. но бывают циклы... а как еще можно завершать работу?

ЗЫ. заменил на
Код:
Exit
, полевые испытания показали положительный результат. завтра скрипты пройдут свой нормальный цикл работы - станет все ясно.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Shinoby [?]
вопрос про скрипт и версию - неожиданные.
штатно завершаю через
Код:
ProcessClose($curentPID)
Что и хотелось увидеть. Закройте любую программу, имеющую иконку в трее, через диспетчер задач, и иконка останется в трее.
 

_dron_

Знающий
Сообщения
84
Репутация
8
Shinoby сказал(а):
Код:
ProcessClose($curentPID)

и это видимо считается таки ненормальным завершением.
ну кроме иконки в трее у программы остаются не освобожденные данные в куче, что приводит к утечкам памяти!!! :whistle:
 

joiner

Модератор
Локальный модератор
Сообщения
3 338
Репутация
574
_dron_ [?]
остаются не освобожденные данные в куче, что приводит к утечкам памяти
при закрытие программы память освобождается
 

alex33

Скриптер
Сообщения
1 457
Репутация
184
Я придумал другое решение, на замену ProcessClose для AutoIt скриптов:
Код:
; prog_uniq
$sidProg = "AutoIt v3"
If WinExists("[TITLE:"&$sidProg&"; CLASS:AutoIt v3]") Then
WinClose("[TITLE:"&$sidProg&"; CLASS:AutoIt v3]")
EndIf
AutoItWinSetTitle($sidProg)
Sleep(100)
; end_prog_uniq

Ну или
Код:
WinClose("[TITLE:AutoIt v3; CLASS:AutoIt v3]")

И иконка в трее не остаётся...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 402
Я вообще не вижу в чём проблема. Если нужно завершить свой же скрипт, то зачем что то придумывать, на это и есть Exit.
А для завершения дочернего скрипта, достаточно организовать простую интеракцию (на форуме есть немало примеров).
 

joiner

Модератор
Локальный модератор
Сообщения
3 338
Репутация
574
CreatoR
тут в другом дело. у меня, к примеру, при частых запусках кода через редактор скриптов Scite в трее остается висеть иконка скрипта. в итоге их может набраться десяток..приходится проводить мышкой, чтобы исчезли муляжи. работу скрипта завершаю через инструмент редактора
 

joiner

Модератор
Локальный модератор
Сообщения
3 338
Репутация
574
не понял вопрос..чтобы остановить
не всегда через редактор, бывает через иконку в трее, бывает через сочетание клавиш
 

joiner

Модератор
Локальный модератор
Сообщения
3 338
Репутация
574
нигде не читал такого правила. и не делаю так
да и не важно, проблему автор осветил, я нашел на форуме тему, где уже это обсуждалось
 
Автор
S

Shinoby

Новичок
Сообщения
80
Репутация
2
всем спасибо. :smile:
штатная работы скриптов так же не родило хвостов в виде иконки.
Код:
exit
- всему голова.

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

а в скриптах всегда делаю хоткей с exit.
 
Верх