| View previous topic :: View next topic |
| Author |
Message |
Mrak_Tlen
Joined: 08 Oct 2024 Posts: 24
|
(Separately) Posted: Tue Mar 03, 2026 19:25 Post subject: |
|
|
| А только у меня закрывается тотал со скриптом нагскрин, если после запуска первым делом нажать на любой пункт меню или правой кнопкой на панель табуляторов(имя,тип,размер). Но если что то другое, то потом нормально работает и не падает. Например перейти на другую вкладку. |
|
| Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 320 Location: Электросталь
|
(Separately) Posted: Wed Mar 04, 2026 08:28 Post subject: |
|
|
При попытке удалить файл
| Code: | FileDelete(COMMANDER_PATH & '\Profile\arc\7z64\temp1.txt') |
получил отворот
| Quote: | | Runtime error 216 at 06CC5EC0 |
Autorun 2.2.21.3, TC 11.56 x32, Windows 11 23H2. _________________ Amo ergo sum |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1031
|
(Separately) Posted: Wed Mar 04, 2026 12:04 Post subject: |
|
|
| Mrak_Tlen wrote: | | А только у меня закрывается тотал со скриптом нагскрин |
Не только у вас. Варианты что делать предлагались. Если у вас стоит TWinKey, попробуйте отключить. Скорее всего, он вызывает эту проблему.
| yozhik wrote: | | Runtime error 216 at 06CC5EC0 |
Возможно, косяк Autorun, но для верности лучше посмотреть журнал приложений (сбойный модуль может оказаться другим). Реальный пример из моего журнала:
| Code: | Имя сбойного приложения: TOTALCMD.EXE, версия: 11.55.0.0, метка времени: 0x2a425e19
Имя сбойного модуля: LineBreakInfo.wdx, версия: 0.3.0.0, метка времени: 0x6569ee66
Код исключения: 0xc0000005
Смещение ошибки: 0x0004a7c8 |
Сначала я тоже грешил на Autorun. |
|
| Back to top |
|
 |
FallenAngel
Joined: 30 Dec 2025 Posts: 26
|
(Separately) Posted: Wed Mar 04, 2026 16:12 Post subject: |
|
|
| Mrak_Tlen wrote: | | А только у меня |
Там много вариантов, не только пункт меню. Я не поборол и вернулся к autoclick.dll |
|
| Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 498
|
(Separately) Posted: Wed Mar 04, 2026 16:44 Post subject: |
|
|
| Mrak_Tlen wrote: | | А только у меня закрывается тотал со скриптом нагскрин |
Закрывается на моей сборке или на вашей? У меня все отлично работает. Возможно у вас стоит какая-нибудь программа, перехватывающая нажатия клавиш типа панто свитчера. |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1031
|
(Separately) Posted: Wed Mar 04, 2026 18:30 Post subject: |
|
|
| yozhik wrote: | | При попытке удалить файл |
Дошли руки проверить. Проблема действительно есть.
| Code: | Имя сбойного модуля: Autorun.wdx, версия: 2.2.21.3, метка времени: 0x68ef4c68 |
Как вариант (если очень нужно) можно использовать ShellExec, пока автор плагина не объявится
| Code: | Local tmp1 = COMMANDER_PATH & '\Ini\Backup\temp1.txt'
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%tmp1%""" |
Или лучше сразу с FileExist
| Code: | Local tmp1 = COMMANDER_PATH & '\Ini\Backup\temp1.txt'
If FileExist(tmp1) Then
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%tmp1%"""
Endif |
| FallenAngel wrote: | | Я не поборол и вернулся к autoclick.dll |
Так не понятно было с чем бороться. Вы попробовали на другом компьютере, сказали, что всё то же самое, но пробовать нужно на другой сборке, где проблемы изначально не было замечено. Если на другой сборке проблемы нет, хотя бы будет понятно, что причину нужно искать в настройках своего ТС, а скорее всего в каком-то плагине, типа TWinKey. |
|
| Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 498
|
(Separately) Posted: Wed Mar 04, 2026 20:23 Post subject: |
|
|
| Orion9 wrote: | | Так не понятно было с чем бороться. |
Появился еще один интересный результат тестирования. Я у себя время цикла на 1 с исправил. Но тем не менее периодически окно висит несколько секунд. Поймать этот момент не возможно, соответственно время вычислить не возможно. Но у меня и время операций зависит от занятости ЦПУ. |
|
| Back to top |
|
 |
Mrak_Tlen
Joined: 08 Oct 2024 Posts: 24
|
(Separately) Posted: Wed Mar 04, 2026 21:11 Post subject: |
|
|
Закрыл пунтосвитчер. проблема пока ушла и не воспроизводится даже когда пунто запустил... может через время или после перезагрузки опять вернется.
Твинкей тоже есть. Долго искал, что тормозит, оказалось его автосортировка.Ссорь за оффтоп. |
|
| Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 498
|
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1031
|
(Separately) Posted: Thu Mar 05, 2026 00:00 Post subject: |
|
|
| AkulaBig wrote: | | Появился еще один интересный результат тестирования |
Ну, о своем тестировании я тоже писал. Проблему воспроизвести мне не удалось, да и вообще проблем не заметил. Возможно, нужно больше тестов, но без повторения проблемы (закрытия тотала) остается только гадать, что может к этому приводить.
| Mrak_Tlen wrote: | Закрыл пунтосвитчер. проблема пока ушла
Твинкей тоже есть. |
Не знаю на счет пунтосвитчера, но TWinKey, на мой взгляд, более опасен в плане конфликта. Он так же, как и Autorun, загружается в ТС в качестве псевдоконтентного плагина и перехвтывает нажатия клавиш.
Чтобы разобраться, что происходит, нужно для начала как-то локализировать проблему. Убедиться, что тотал не падает. А если падает, то какой плагин к этому приводит (посмотреть в журнале приложений). Проверить на других сборках. Проверить на чистом ТС. И так далее.
Ну а если не хочется этим заниматься, можно и к autoclick.dll вернуться ) |
|
| Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 498
|
(Separately) Posted: Thu Mar 05, 2026 00:21 Post subject: |
|
|
| Orion9 wrote: | | TWinKey, на мой взгляд, более опасен в плане конфликта |
Но я его не использую. Соответственно если и моя сборка падает, значит панто свитчер или что-то подобное. |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1031
|
(Separately) Posted: Sat Mar 07, 2026 12:57 Post subject: |
|
|
Решение от AkulaBig рабочее, у меня этот код проблем не вызывает. Тем не менее, решил сделать альтернативный код, использующий другой алгоритм поиска кнопки.
Делал из интереса, поэтому некоторые моменты не учтены (например, работа с ключем в реестре), но разделение на блоки позволяет легко внести нужные изменения, если они потребуется.
Пример хорошо демонстрирует всю мощь и великолепие скриптового языка, которым стал современный Autorun. Тут вам и запуск в отдельном потоке, и чтение ключей из ini, и проверка существования файлов и каталогов, и раскрытие переменных окружения, и создание массивов, и выполнение операций в цикле, и работа со строками, и вызовы DllCall... Матерь божья! Чувак сделал целый скриптовый движок!
 Hidden text | Code: | LoadLibrary Plugins\Autorun_Tweaks.dll
LoadLibrary Plugins\Autorun_Sysinfo.dll
LoadLibrary Plugins\Autorun_Runtime.dll
LoadLibrary Plugins\Autorun_Process.dll
LoadLibrary Plugins\Autorun_RegExp.dll
RunThread("NagScreen")
Func NagScreen()
Global gNagPush = 0, gNagCtrl = List()
If WincmdKeyExist() Then Return
Local ewp = Callback("EnumChilProc", "hwnd;lparam"), dbg = 1
Local hWnd, nTimeOut = 2000, nSleep = 0
While nTimeOut > 0
hWnd = WinFind(0, "TNASTYNAGSCREEN")
If hWnd > 0 Then
DllCall("EnumChildWindows", "hwnd", hWnd, "ptr", ewp.Ptr, "lparam", 0)
If gNagPush Then Break
EndIf
Sleep(50)
nTimeOut -= 50
Wend
If hWnd = 0 Then Return
If nSleep > 0 Then Sleep(nSleep)
If dbg And IsPressed(0x11) Then ShowHint(gNagCtrl.Text)
Free(gNagCtrl, ewp)
EndFunc
Func WincmdKeyExist()
Local lst = gNagCtrl
Local sKeyPath = IniRead("~/R", COMMANDER_INI, "Configuration", "KeyPath")
If sKeyPath = "$" Then Return 1
If sKeyPath <> "" Then
sKeyPath = JoinPath(Set(sKeyPath))
If FileExist(sKeyPath) Then lst.Add(sKeyPath)
EndIf
lst.Add(COMMANDER_PATH)
lst.Add(FileGetDir(COMMANDER_INI))
If FileExist("c:\totalcmd") Then lst.Add("c:\totalcmd")
For i = 0 To lst.Count - 1
If FileExist(lst[i] & "\wincmd.key") Then Return 1
If FileExist(lst[i] & "\tcmdkey.zip") Then Return 1
Next
Return 0
EndFunc
Func EnumChilProc(hwnd, lparam)
Local Text = WinGetText(hwnd)
gNagCtrl.Add(WinGetClass(hwnd) & " - " & Text)
If StrLen(Text) = 1 Then
gNagPush = Text
Return 1
EndIf
If StrLen(Text) = 2 Then
Text = StrReplace(Text, "&", "")
If Text = gNagPush Then
SendMessage(hwnd, 245, 0, 0)
Return 0
EndIf
EndIf
Return 1
EndFunc |
Что касается алгоритма, принцип примерно такой же. Каждые 50 миллисекунд после старта ТС происходит поиск окна триала. Если окно найдено, перечисляются все элементы управления через вызов EnumChildWindows. Далее сравнивается текст и класс каждого элемента, при совпадении посылается SendMessage.
Пример перечисления есть в справке (объект Callback), он был взят за основу.
Код можно вставить в любое место, но первый вызов "RunThread" должен обязательно идти после "LoadLibrary Plugins", поскольку используются дополнительные функции из модулей такие, как WinFind и ShowHint.
Если dbg = 1, то при запуске с удержанием CTRL отобразится отладочная информация в окне подсказки.
Возможно, запуск в отдельном потоке поможет избавится от конфликта с другими приложениями и плагинами, если таковой конфликт имелся. |
|
| Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 498
|
(Separately) Posted: Sat Mar 07, 2026 18:02 Post subject: |
|
|
| Orion9 wrote: | | у меня этот код проблем не вызывает. |
А вы установите Панто Свитчер С ним много проблем получите. А кстати, может потестите.
| Orion9 wrote: | | If FileExist(lst[i] & "\tcmdkey.zip") Then Return 1 |
Я-же так и забыл проверить архив. Спасибо что напомнили, надо добавить. |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1031
|
(Separately) Posted: Sun Mar 08, 2026 00:27 Post subject: |
|
|
| AkulaBig wrote: | | А вы установите Панто Свитчер |
Зачем нам Панто Свитчер? Мы сделаем свой Панто Свитчер. Возможности Autorun не знают границ
Небольшой патч к функционалу
 Hidden text | Code: | Func NagScreen()
Global gNagPush = 0, gNagCtrl = List()
If WincmdKeyExist() Then Return
Local ewp = Callback("EnumChilProc", "hwnd;lparam"), dbg = 1
Local hWnd, nTimeOut = 1500, nSleep = 0
While nTimeOut > 0
hWnd = WinFind(0, "TNASTYNAGSCREEN")
If hWnd > 0 Then
WinSetState(0, hWnd)
DllCall("EnumChildWindows", "hwnd", hWnd, "ptr", ewp.Ptr, "lparam", 0)
If gNagPush Then Break
EndIf
Sleep(50)
nTimeOut -= 50
Wend
If hWnd = 0 Then Return
If nSleep > 0 Then Sleep(nSleep)
If dbg And IsPressed(0x11) Then ShowHint(gNagCtrl.Text)
Free(gNagCtrl, ewp)
Sleep(500)
If WinGetState(1, hWnd) Then WinSetState(1, hWnd)
EndFunc |
WinSetState(0, hWnd) сразу скрывает окно при появлении. Эффект гладкости, как от бритья с тройным лезвием
Последние две строчки на всякий случай. Вдруг клик не сработает по какой-то причине, тогда окно снова нужно сделать видимым. |
|
| Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 498
|
(Separately) Posted: Sun Mar 08, 2026 00:53 Post subject: |
|
|
| Orion9 wrote: | | WinSetState(0, hWnd) сразу скрывает окно при появлении. |
Я против этого. Кстати, подозреваю что именно из-за этого глючат кликеры на некоторых видюхах, драйверах. |
|
| Back to top |
|
 |
|
|
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
|