Что нового

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

Shinoby

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

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

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

madmasles

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

Shinoby

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

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

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

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

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

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

madmasles

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

_dron_

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

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

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

joiner

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

alex33

Скриптер
Сообщения
1,457
Репутация
186
Я придумал другое решение, на замену 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,671
Репутация
2,481
Я вообще не вижу в чём проблема. Если нужно завершить свой же скрипт, то зачем что то придумывать, на это и есть Exit.
А для завершения дочернего скрипта, достаточно организовать простую интеракцию (на форуме есть немало примеров).
 

joiner

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

joiner

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

joiner

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

Shinoby

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

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

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