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 ... 234, 235, 236
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Orion9



Joined: 01 Jan 2024
Posts: 1147

Post (Separately) Posted: Fri May 29, 2026 13:06    Post subject: Reply with quote

FallenAngel wrote:
Понаблюдаю.

Если ТС сам закрывается (на что может указывать запись в логе), это плохо. С чего бы ему самому закрываться? Если только скрипт какой-то чудит ... А monkey business от маестро хорошо известен: клик по невидимой кнопке (окну) триала приводит к описанному вами явлению.
FallenAngel wrote:
Нужно понять, это глобальный баг или что-то частное.

Больше похоже на первое, чем на второе. Судя из описания, скрипт меняет %Path% на уровне пользователя
Code:
pathman.ps1. Добавляет \ удаляет каталог в пользовательскую переменную %PATH%. Поддерживает пакетный режим.

А это приводит к отправке сообщения WM_SETTINGCHANGE
Quote:
Когда вы нажимаете «ОК» в системном диалоговом окне переменных сред, Windows отправляет специальное широковещательное сообщение WM_SETTINGCHANGE всем открытым окнам [1]. Некоторые среды разработки (IDE), продвинутые эмуляторы терминалов (например, VS Code, Fleet, или некоторые плагины для Windows Terminal) перехватывают это сообщение [1]. Вместо того чтобы просто проигнорировать его, они пытаются «помочь» пользователю: динамически перечитывают актуальные переменные из реестра и полностью перезаписывают ими текущий %PATH% вашего процесса.В результате все временные пути, которые вы добавляли локально внутри процесса (например, через скрипты или код), бесследно стираются.

Судя по всему, тотал перехватывает сообщение WM_SETTINGCHANGE и заново перечитывает переменные окружения, что приводит к сбросу изменений, сделанных через Autorun.

Проверить можно
Code:
# WM_WININICHANGE
SetMessageAction /P 0x001A "WinIniCallback"   

Func WinIniCallback(hWnd, uMsg, wParam, lParam)
    MsgBox(GetEnv("path"), "WM_WININICHANGE", 48+4096)
    If lParam <> 0 Then SendMessage(AUTORUN_TCHANDLE, 0x001A, 0, 0)
EndFunc

Сначала приходит системное сообщение (пути еще не успели измениться тоталом). Второе сообщение отсылает сам Autorun — пути сброшены.

Не знаю, что вам с этим делать. Наверное, можно отказаться пока от скрипта, это самый простой вариант. Добавлять нужные пути только через Autorun Smile
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1147

Post (Separately) Posted: Fri May 29, 2026 20:04    Post subject: Reply with quote

FallenAngel
Проверил на таких командах в PowerShell
Code:
# Получаем текущий ПОЛЬЗОВАТЕЛЬСКИЙ Path из реестра
$oldUserPath = [Environment]::GetEnvironmentVariable("PATH", "User")

# Формируем новую строку, добавив ваш путь через точку с запятой
$newUserPath = "$oldUserPath;C:\MyFolder"

# Записываем обновленный список обратно в профиль пользователя
[Environment]::SetEnvironmentVariable("PATH", $newUserPath, "User")

Да, теперь точно можно сказать, что SetEnvironmentVariable служит триггером для WM_SETTINGCHANGE, на которое реагирует тотал. Можно, конечно, следить за этим из Autorun, но стоит ли. По-моему, проще совсем отказаться от SetEnv /A PATH и менять переменные окружения из ps1 скрипта.
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 ... 234, 235, 236
Page 236 of 236

 
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