Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Autorun
Goto page Previous  1, 2, 3 ... 22, 23, 24 ... 130, 131, 132  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Sep 14, 2011 10:10    Post subject: Reply with quote

LonerD wrote:
Не знаю. Но при перезапуске - что утилитами, что скриптом, - переменные остаются. Получается, что-то не даёт им полностью выгрузиться/удалиться.

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

Code:
Открыть Autorun.cfg и удалить добавленную строку.
Теперь перезагрузить Тотал (через утилитку или скриптом).
Опять зайти в Environment Variables.
OSArch всё-ещё там, хотя в авторане она отсутствует (переменная осталась от предыдущего запуска Тотала и не удалилась при перезапуске).

Естественно. Некому было удалять её оттуда.
Code:
А теперь закрыть Тотал полностью и открыть его снова. Переменной уже нету.

Ты же запускаешь новую копию тотала из Проводника (меню Пуск, панель задач и рабочий стол тоже принадлежат ему). В котором эту переменную никто не определял. Потому и нету. А если бы кто-то определил такую переменную глобально, она была бы у всех.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sat Sep 17, 2011 21:01    Post subject: Reply with quote

[quote="MVV"]
LonerD wrote:
Переменные окружения не умеют выгружаться/удаляться сами по себе. При запуске программы ей по наследству переходят все переменные окружения, которые были в запускающей программе.

Это собственно я и имел в виду когда спрашивал:
LonerD wrote:
Или же этого невозможно добиться в силу того, что рестартер как таковой запускается из-под Тотала?

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

А вот такой нюанс очень даже портит жизнь:
При закрытии Тотала отрабатывает Autorun_Starter.bat и через него убиваются запущенные приложения. Например, в autorun.cfg у меня прописан запуск AUTOFx.exe при запуске Тотала. А в Autorun_Starter.bat прописано:
Code:
:starter_unload
taskkill /t /IM AUTOFx.exe
taskkill /f /IM AUTOFx.exe
echo Unloading
goto :EOF

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


Last edited by LonerD on Sat Sep 17, 2011 21:09; edited 1 time in total
Back to top
View user's profile Send private message
ApceH



Joined: 08 Apr 2011
Posts: 316
Location: Димитровград

Post (Separately) Posted: Sat Sep 17, 2011 21:09    Post subject: Reply with quote

LonerD
Если речь идёт о разных ТС/сборках, то опять же, нужно убивать либо по пути, как мы обсуждали тут.
Или же составить up-файл (пресет) и в Авторане выполнить этот пресет. А в пресете прописать убийство процессов с нужным путём.

А если один и тот же ТС, то нужно учитывать родственные связи. Мне такие средства неизвестны.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Sep 17, 2011 21:22    Post subject: Reply with quote

ApceH wrote:
А если один и тот же ТС, то нужно учитывать родственные связи. Мне такие средства неизвестны.
Так там убийство по PID. Никаких проблем с tskill без /A.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Sep 17, 2011 21:46    Post subject: Reply with quote

Можно легко научить батник не запускать и не убивать программы, если запущено более одной копии тотала...
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sat Sep 17, 2011 22:04    Post subject: Reply with quote

Quote:
Если речь идёт о разных ТС/сборках, то опять же, нужно убивать либо по пути

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

Quote:
Можно легко научить батник не запускать и не убивать программы, если запущено более одной копии тотала...

Да, это один из вариантов, наверное, самых легко реализуемых. Как проверить что запущены несколько копий TOTALCMD.EXE?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Mon Sep 19, 2011 15:11    Post subject: Reply with quote

Один из вариантов:
Code:
@echo off
set /A tc_count=0
for /F "usebackq delims=" %%l in (`tasklist /fi "IMAGENAME eq TOTALCMD*"`) do (
   echo %%l | find /i "totalcmd"
   if not errorlevel 1 call :inc
)
if /i %tc_count% lss 2 goto exec
goto :EOF

:inc
set /A tc_count=%tc_count%+1
goto :EOF

:exec
echo Only one or none TC instances found.

Ищет сразу и 32-битные, и 64-битные копии (к слову, все процессы, имена которых начинаются с TOTALCMD). При этом, если запускается тотал #1, потом #2, потом закрывается #1 и потом закрывается #2, запускать всё будет батник от #1, а убивать процессы - батник от #2. Smile
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Tue Sep 20, 2011 17:07    Post subject: Reply with quote

У меня не работает
Code:
SetEnv /A /EV PATH ;%COMMANDER_PATH%

Проверьте ещё кто нибудь
1.4.9.6 beta
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Tue Sep 20, 2011 17:20    Post subject: Reply with quote

MVV. Спасибо.
А как поведёт себя код если запустить #1, потом #2, закрыть вначале #2, а затем #1 ?

HA3APET
Уже с месяц использую это строку - работает.
Проверил приведённый тобою код (решил, что может символы неправильные) - тоже работает.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Sep 20, 2011 18:26    Post subject: Reply with quote

LonerD wrote:
А как поведёт себя код если запустить #1, потом #2, закрыть вначале #2, а затем #1 ?

Батник всегда будет выполнять действия, если запущено не более одной копии тотала. Так что при правильном вызове батник последнего запущенного тотала будет убивать процессы.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Sep 20, 2011 22:18    Post subject: Reply with quote

MVV
Можешь сделать что-нибудь с плагином, чтобы vbs прикрутить?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Sep 20, 2011 23:22    Post subject: Reply with quote

Могу. Переписать с нуля.

Code:
MIME-Version: 1.0
Content-Type: application/octet-stream; name="Autorun_Execute.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Autorun_Execute.7z"

N3q8ryccAAOY8dQX2wQAAAAAAABxAAAAAAAAAGWYVR4AJpaOcAAX9+wFu+r0/5QBL0TuTr0JScWp
wXIs+2C8FAvofZL9OQyrmdRJ6fFEUwUox4AepJrWfamkx9MSo1AMPur1FMg8of0jfCyT3T8/4QjX
pnYCgF2sz0O89Ephh0uLtfvvc/FD0ezOcJchTpj6oNVFTYW8DDhln73GEQH3KuVPc4rlFYJRQnGb
rU4sUUHicRm/o/6+eh1mnG/DnibKhxYhWEnp49Ihn+am5mX55EbeI2P1yfZ7To1H8sMf26GgZUsm
b21zbkCwNQJktcWwhrCg36U9lWdkFU/xGU8nBITFjlKZcIBdOq8dBR+TeEmX+fCl1vuFYE7zoPVa
tpO5jvzujKNzXD+ZnnHfHGOLEEgdfGMvyEsuW1kGrpJ3oxLQuO9ggrx9P24BtWrKSX/NEJWuJs2B
8nF97a219oTSX7RnzX0LE+AMzDp41VzxWAaim1V8r2TsebU6AdDrZQ8JOiB3JKDFcwv7R+d8a/Qe
InLULQ7ZNuoo4B8IMIhus3JNIG0jSEbvACMNXifA8YPWmVakMZYZdWdYsgD85QITMBCUAfDJR1hM
ImDRdy+0tSMV1dGa9JH206hRd1x4ilHW4NgzGK/e7lPFhq4nvACgc9LDpF8yYNphnH4TQO308p/7
lY9qoU74gUrpTEOIC8gHtq/UyQxwQlSki/eMjmJlUcMXuNjjbfPDBkT2PXB6K5GlxxzX69RelK/a
EIRVQBFVq7+qgv7zTcf6Q2SBqzWZJxC0Sd73Ch01TQoEXBtI5HblMo+B4NJVRWOR0Nv2kIUCo+Iw
TTfKM2FAk7978naOoefxyczFjUbX5J7AWk4HGNWk8gJ0zqq2Eb4g0RzXwTfnX30Yp/CHjjwG1Amk
CrYgpwML363t8IKKG0EdMHd8fhq6xOGpMkgGjk+/f1JMlPAFCmLW0ex75nlB8mOZ/z7TBLAbFxDo
sLzD6kXjT7Qu7s2GKRVYW4AYKI0RHiQGqNbFcaPUKIPgEllh8g2bjRKMqQIrJSIDAP0AVoSPntPE
eXyRoX2rTUxcNOC4eLlIdqK38yC3d3KvNPzj6tqvYxltjdJHDMg4tlCHrY6rMy7GK8j/2MHe0Kon
t37J5CTmu3/sztTLNmsgQYuHMeut8nFO7MMLWJMfTWHQo6l7tbcZ9Zm1x2aDQTlel5yY2vPBA1/d
2INpITYq7k3T72IZ9L6ciqznz4ul83lsIyvcP1qVdCsoqLgBSrQXrSk3du9sY6l93PnDDXWCP3yp
vA3JEk4Y/ALtAlbiRgIyigfETK/gGXs5EhCaHeNYOqDX7eRXqIIBGK737iQEeTxpmbLoj2YYS8J7
jy/9RLDpiL1FmDffc4q+RFvcsbYnpszb/PXF9G5g3qRLxVLKB6A0RO4NlPRPimknFBzzgG5pMweT
nwunHG4JjyEWBxbA1q8c/TLMHqFV1pSOzr3KyYSXRnVWOHFrMMxOqPOvLgkmXa8ildGgdO1/Azao
3ewtfLsQlmprwFV62RU/a5MZXQlkouvdZMTQFTqXGmC/2yI0y/6Zxx+zZQKmQiLbA8QXzS2u6PRL
Yvsqm9Yj5hnjk5tP0NvPz9VKsmcpWjY63AoMBUMzv5TT5KTWEL79m5mSyC+/kjQxpcZQrsH1o28F
aYSnMFb5XethoFuhjwe8ndcyHiAAAQQGAAEJhNsABwsBAAIjAwEBBV0AAAEABAMDAQMBAAyMAIwA
AAgKAQTtSO0AAAUBESkAQQB1AHQAbwByAHUAbgBfAEUAeABlAGMAdQB0AGUALgBkAGwAbAAAABQK
AQBmvF5o0HfMARUGAQAgCAAAAAA=


Рядом с библиотечкой положи INI-файл с таким же именем, в нём пропиши что-то вроде:
Code:
[Load]
Show=5
Command=Load.vbs

[Unload]
Command=Unload.vbs
Wait=0

Вообще, в строке Command можно указать любую командную строку, например, запустить батник, экзешник или документ. Параметр Show принимает обычные значения SW_* (см. справку по ShellExecute), по умолчанию 5 (SW_SHOW). Параметр Wait позволяет указать, надо ли дожидаться завершения программы, и по умолчанию равен 1.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Wed Sep 21, 2011 00:04; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Sep 20, 2011 23:51    Post subject: Reply with quote

MVV
Спасибо. А секция Load в ini обязательна? Я оставил только Unload. Кинул Unload.vbs рядом. При закрытии пишет "Не удается найти "Unload.vbs"."
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Sep 21, 2011 00:05    Post subject: Reply with quote

Если секции или параметра Command в ней нет, модуль молча пропустит выполнение.

А ошибка, скорее всего, из-за того, что текущая папка при выходе стала другой. Добавил установку папки с модулем в качестве рабочего пути при вызове ShellExecuteEx, обновил MIME в предыдущем посте. Без этого ругалась на отсутствие файлов, а с этим - на неправильное их содержание - значит, нашла. Very Happy
Code:
[Load]
Command=1.vbs
Wait=1

[Unload]
Command=2.vbs

_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Sep 21, 2011 00:17    Post subject: Reply with quote

MVV
Спасибо, теперь работает. Smile

Теперь буду думать как с перезапуском решить...
Вот, придумал: если перезапуск вызывается из другого скрипта или утилиты, то не выполнять Command. Сможешь прикрутить такую фичу?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 22, 23, 24 ... 130, 131, 132  Next
Page 23 of 132

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group