AkulaBig
|
Posted: Wed Mar 11, 2026 15:12 Post subject: |
|
|
| Orion9 wrote: | | говорят, рубоард в вечный бан ушел |
Есть методы заставить его работать. Но кто знает, надолго ли это. Я вообще руководство ру борды не понимаю. Зачем на техническом форуме разрешать срач. Из-за одной темы всему форуму капец.
Кстати, я сейчас периодически качаю архив этого форума. Он тоже на ниточке держится. Хоть и совсем по другой причине.
Добавлено спустя 35 минут:
FallenAngel
Все-же мне кажется, если у вас не стоит прожка, которая перехватывает хуки нажатия клавиш, то проблема в скорости выполнения кода. Сейчас я сделал вариант, при котором можно задать время поиска окна наг-скрина, а также работа продолжается только после нажатия клавиши. Если не трудно, прошу протестировать. У меня код работает при любых вариантах, поэтому я не могу локализовать проблему.
 Hidden text
| Code: |
# CloseNagScr.aucfg
# ================================ Описание ================================
# Нажимает кнопку на наг-скрине.
# ================================= Примеры ====================================
# Для использования скрипта в плагине Total Commander Autorun, необходимо
# включить NagScreen.aucfg в файл autorun.cfg:
# Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\NagScreen.aucfg
# ==============================================================================
# ============================== Description ================================
# Presses a button on the nagscreen.
# ================================= Example ====================================
# To use script in plugin Total Commander Autorun, it is possible enable
# NagScreen.aucfg:
# Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\NagScreen.aucfg
# ==============================================================================
# Если наг-скрин не успевает закрываться, необходимо добавить задержку в
# переменной nTimeOut. Например: nTimeOut = 1000 или nTimeOut = 3000
# If nagscreen does not have time to close, you need to add a delay in
# nTimeOut variable. For example: nTimeOut = 1000 or nTimeOut = 3000
Local hWnd, nTimeOut = 0
If WincmdKeyExist() Then Return
If nTimeOut <> 0 Then
While nTimeOut > 0
FindNagScreen()
Sleep(50)
nTimeOut -= 50
Wend
Else
FindNagScreen()
EndIf
Local hNagScreen = FindNagScreen()
If hNagScreen > 0 Then
# Определяем хэндлы кнопок для закрытия окна наг-скрина
# Define button handles for closing nagscreen window
hButton3 = DllCall("GetWindow", "hwnd", hNagScreen, "uint", 2, "hwnd")
hButton2 = DllCall("GetWindow", "hwnd", hButton3, "uint", 2, "hwnd")
hButton1 = DllCall("GetWindow", "hwnd", hButton2, "uint", 2, "hwnd")
# Имитация клика ЛКМ
# Simulate LMB click
BM_CLICK = 245
# Нажимаем кнопку для закрытия окна наг-скрина
# Press the button to close nagscreen window
Switch WinGetText(hNagScreen)
Case '3'
PostMessage(hButton3, BM_CLICK, 0, 0)
Case '2'
PostMessage(hButton2, BM_CLICK, 0, 0)
Case '1'
PostMessage(hButton1, BM_CLICK, 0, 0)
EndSwitch
EndIf
# ================================ Описание ================================
# Поиск окна наг-скрина.
# ================================= Примеры ================================
# Найти окно наг-скрина: FindNagScreen()
# ==============================================================================
# ============================== Description ===============================
# Finding nagscreen window.
# ================================= Example ================================
# Find nagscreen window: FindNagScreen()
# ==============================================================================
Func FindNagScreen()
Local hNagScreen = 0
# Находим окно наг-скрина
# Find the nagscreen window
hNagScreen = WinFind(WinFind(WinFind(WinFind(WinFind(0, 'TNASTYNAGSCREEN'), _
auX64 ? "Window" : "TNotebook"), _
auX64 ? "Window" : "TPage"), _
auX64 ? "Window" : "TPanel"), _
auX64 ? "Window" : "TPanel")
Return hNagScreen
EndFunc
# ================================ Описание ================================
# Проверка наличия ключа wincmd.key.
# При наличии ключа наг-скрин не появляется.
# ================================= Примеры ================================
# Проверка наличия ключа wincmd.key в реестре или по месту расположения:
# WincmdKeyExist()
# ==============================================================================
# ============================== Description ===============================
# Checking presence of key wincmd.key.
# If you have a key, nag screen does not appear.
# ================================= Example ================================
# Checking presence of wincmd.key key in registry or at its location:
# WincmdKeyExist()
# ==============================================================================
Func WincmdKeyExist()
Local lst = List()
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))
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
|
Last edited by AkulaBig on Wed Mar 11, 2026 15:58; edited 1 time in total |
|