Orion9

|
Posted: Sun Mar 08, 2026 23:54 Post subject: |
|
|
Ну все, это последняя версия с оптимизацией EnumChilProc.
 Hidden text | Code: | LoadLibrary Plugins\Autorun_Tweaks.dll
LoadLibrary Plugins\Autorun_Runtime.dll
RunThread("NagScreen")
Func NagScreen()
Global gNagPush = 0, gNagCtrl = List(), gNagDbg = false
If WincmdKeyExist() Then Return
Local ewp = Callback("EnumChilProc", "hwnd;lparam"), i = 1, h = 0
Local hWnd, nTimeOut = 1500, nSleep = 0
While nTimeOut > 0
hWnd = WinFind(0, "TNASTYNAGSCREEN")
If hWnd > 0 Then
h += 1
If nSleep > 0 Then Sleep(nSleep)
WinSetState(0, hWnd)
DllCall("EnumChildWindows", "hwnd", hWnd, "ptr", ewp.Ptr, "lparam", 0)
If gNagPush = -1 Then Break
EndIf
Sleep(5)
nTimeOut -= 5
i += 1
Wend
If hWnd = 0 Then Return
If gNagDbg And IsPressed(0x11) Then
ShowHint("find = " & h & auCRLF & "round = " & i & auCRLF & gNagCtrl.Text)
EndIf
Free(gNagCtrl, ewp)
Sleep(500)
If WinGetState(1, hWnd) Then WinSetState(1, hWnd)
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 sText = WinGetText(hwnd), nLen = StrLen(sText)
If gNagDbg Then
gNagCtrl.Add(WinGetClass(hwnd) & " - " & sText)
EndIf
If nLen = 1 Then
gNagPush = "&" & sText
ElseIf nLen = 2 And sText = gNagPush Then
gNagPush = -1
SendMessage(hwnd, 245, 0, 0)
Return 0
EndIf
Return 1
EndFunc |
Убраны лишние функции и отключен дебаг. Прибавку в скорости вряд ли получится заметить, но все же. |
|