Добавлено: Ср фев 05, 2025 05:18
Дак он есть на руборде. Причем есть еще и моя страничка. Заметьте, не я начал сборки здесь обсуждатьOrion9 писал(а):Нужен другой топик на тему сборок и прочего.
Дак он есть на руборде. Причем есть еще и моя страничка. Заметьте, не я начал сборки здесь обсуждатьOrion9 писал(а):Нужен другой топик на тему сборок и прочего.
На руборде много чего есть, даже Рошаль со своим топиком ) Но вот чего там точно нет, так это темы "Autorun" ))AkulaBig писал(а):Дак он есть на руборде.
Вот видите?! Каждый ютится там, где теплее, и только мы с Loopback - там, где холоднее ) Холодные мы с ним сердцем, остыли давно ))AkulaBig писал(а):Причем есть еще и моя страничка
Да без разницы. Ничто нам не мешает продолжить. Как говорится, вливайтесь ))AkulaBig писал(а):Заметьте, не я начал сборки здесь обсуждать
[cut]Orion9 писал(а): Ничто нам не мешает продолжить.
Есть только четыре варианта, при которых я могу оказаться на руборде:Avada писал(а):А про ру-борд вам посоветовали в общем и целом правильно.
Код: Выделить всё
RegisterCommand 61003 "SwitchAssocState"
Global AssocIniState
# первое выполнение при запуске
AssocIniState = AssocState()
Func AssocState()
Local f1, res
IniRead /R f1 %COMMANDER_INI% "Associations" "Filter1" ""
# если в секции что-то есть, значит она включена
If f1 <> "" Then
SetEnv ICON_TEST "%COMMANDER_PATH%\Icons\Clsw\2.ico"
res = true
Else
SetEnv ICON_TEST "%COMMANDER_PATH%\Icons\Clsw\6.ico"
res = false
Endif
Return res
EndFunc
Func SwitchAssocState(lParam)
Local script = %COMMANDER_PATH% & "\Scripts\Vbs\ChangeAssoc.vbs", sect
If AssocState() Then
# отключение секции
sect = '[-Associations]'
Else
# включение секции
sect = '[+Associations]'
Endif
ShellExec /SW_HIDE /WAIT:3000 "%script%" "%sect%"
AssocState()
If AssocIniState Then
AssocUpdateWin(true)
Else
RunThread AssocWinSynс
EndIf
EndFunc
Func AssocWinSynс()
Local b, i, h = 0
PostMessage(AUTORUN_TCHANDLE, 0x433, 519)
# ожидание окна
For i = 1 To 75
h = WinFind(0, "TDlgCustomColors")
If h > 0 Then Break
Sleep(20)
Next
If h > 0 Then
b = WinFind(h, (AUTORUN_TCARCH = 32 ? "TButton" : "Button"), (AUTORUN_TCARCH = 32 ? 3 : 2))
SendMessage(b, 0xF5, 0, 0)
Else
ShowHint("Окно не найдено")
Return
Endif
AssocUpdateWin(false)
EndFunc
Func AssocUpdateWin(lReload)
SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
If lReload Then SendCommand cm_ReloadFileIcons
SendCommand cm_ReloadBarIcons
Sleep(10)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
WinRedraw(1)
EndFunc
Код: Выделить всё
Dim objArgs
Dim objShell
Dim arrLang
arrLang = Array("[+Associations]", "[-Associations]")
Set objShell = WScript.CreateObject("WScript.Shell")
INI = objShell.ExpandEnvironmentStrings("%COMMANDER_PATH%\Ini\Associations.ini")
Text = CreateObject("Scripting.FileSystemObject").OpenTextFile(INI, 1).ReadAll
for i = 0 to UBound(arrLang)
If InStr(1, Text, arrLang(i), 1) = 0 Then
Text = Replace(Text, "[Associations]", arrLang(i), 1, 1, 1)
exit for
End If
next
Set objArgs = WScript.Arguments
If InStr(1, Text, objArgs(0), 1) Then
Text = Replace(Text, objArgs(0), "[Associations]", 1, 1, 1)
With CreateObject("Scripting.FileSystemObject")
.OpenTextFile(INI, 2).Write Text
.OpenTextFile(INI, 1).Close
End With
End If
With CreateObject("Scripting.FileSystemObject")
.OpenTextFile(INI, 2).Write Text
.OpenTextFile(INI, 1).Close
End With
Set objShell = Nothing
WScript.QuitКод: Выделить всё
TOTALCMD#BAR#DATA
61003
%ICON_TEST%
Внутренние ассоциации
1
-1
Она и не будет изменяться ни при каких условиях. Так как состоит только из кнопок переключения панелей. Уже исправил кое-какие нюансы и отредактировал ридми. Так что на нынешний момент меня все устраивает.Orion9 писал(а):имеет одно серьёзное ограничение - первая часть панели не должна изменяться ни при каких условиях
Ну да, забыл это сделать.Orion9 писал(а):Иконка внутренних ассоциаций перестала переключаться, нужно внести изменения в TCASwitcher.ini и указать панель
Уберу, скорей всего.Orion9 писал(а):Но зачем вам эта утилита, если есть скрипт на Autorun
По-моему, тут и думать нечего: только Autorun, только Hardcore )AkulaBig писал(а):Вот я и думаю, схалявить или пойти по трудному пути.
Все работает. Я-то vbs не использую, поэтому забыл вам написать, что у меня в скрипт ошибка закралась. УсловиеOrion9 писал(а):vbs-скрипт
Код: Выделить всё
If InStr(1, Text, objArgs(0), 1) Then
Text = Replace(Text, objArgs(0), "[Associations]", 1, 1, 1)
With CreateObject("Scripting.FileSystemObject")
.OpenTextFile(INI, 2).Write Text
.OpenTextFile(INI, 1).Close
End With
End If
Код: Выделить всё
If InStr(1, Text, objArgs(0), 1) Then
Text = Replace(Text, objArgs(0), "[Associations]", 1, 1, 1)
End If
Код: Выделить всё
[Schemes1]
Name=Алиса #1
Folder=Alisa1
Description=Алиса знает, что делать! #1
WincmdConnected=Соединение.wav
WincmdCopyComplete=Копирование.wav
WincmdDeleteComplete=Удаление.wav
WincmdPackComplete=Упаковка.wav
WincmdSearchComplete=Поиск.wav
WincmdTransferComplete=Передача.wav
WincmdUnpackComplete=Распаковка.wav
[Schemes2]
Name=Алиса #2
Folder=Alisa2
Description=Алиса знает, что делать! #2
WincmdConnected=Соединение.wav
WincmdCopyComplete=Копирование.wav
WincmdDeleteComplete=Удаление.wav
WincmdPackComplete=Упаковка.wav
WincmdSearchComplete=Поиск.wav
WincmdTransferComplete=Передача.wav
WincmdUnpackComplete=Распаковка.wav
[Schemes3]
Name=Archer
Folder=Archer
Description=Archer
WincmdConnected=TC Connected To FTP.wav
WincmdCopyComplete=TC Operation Complete.wav
WincmdDeleteComplete=TC Delete Complete.wav
WincmdPackComplete=TC Pack Complete.wav
WincmdSearchComplete=TC Search Complete.wav
WincmdTransferComplete=TC Transfer Complete.wav
WincmdUnpackComplete=TC Unpack Complete.wav
[Schemes4]
Name=Операция Ы
Folder=Операция Ы
Description=Операция Ы
WincmdConnected=Со взломом или без.wav
WincmdCopyComplete=Мелкое хулиганство - крупные деньги.wav
WincmdDeleteComplete=Пол-литра вдребезги.wav
WincmdPackComplete=Сворачивайтесь - есть дело.wav
WincmdSearchComplete=Где бабуля - я за неё.wav
WincmdTransferComplete=Всё уже украдено до нас.wav
WincmdUnpackComplete=Расхититель соцсобственности.wav
Код: Выделить всё
RegisterCommand 61980 "RegSoundScheme" 0
RegisterCommand 61981 "RegSoundScheme" 1
RegisterCommand 61982 "RegSoundScheme" 2
RegisterCommand 61983 "RegSoundScheme" 3
RegisterCommand 61984 "RegSoundScheme" 4
RegisterCommand 61985 "RegSoundScheme" 5
RegisterCommand 61986 "RegSoundScheme" 6
RegisterCommand 61987 "RegSoundScheme" 7
RegisterCommand 61988 "RegSoundScheme" 8
RegisterCommand 61989 "RegSoundScheme" 9
RegisterCommand 61990 "RegSoundScheme" 10
RegisterCommand 61991 "RegSoundScheme" 11
RegisterCommand 61992 "RegSoundScheme" 12
RegisterCommand 61993 "RegSoundScheme" 13
RegisterCommand 61994 "RegSoundScheme" 14
RegisterCommand 61995 "RegSoundScheme" 15
RegisterCommand 61996 "RegSoundScheme" 16
RegisterCommand 61997 "RegSoundScheme" 17
RegisterCommand 61998 "RegSoundScheme" 18
RegisterCommand 61999 "RegSoundScheme" 19
Global DirSounds = %COMMANDER_PATH% & "\Ini\Sounds\"
Func RegSoundScheme(lParam, nItem)
Local ini = DirSounds & "Sounds.ini"
Local sect = "Schemes" & nItem, name, fold, desc
If Not FileExist(ini) Then
ShowHint("Не найден " & ini)
Return
Endif
IniRead name %ini% %"%sect%" "Name"
IniRead fold %ini% %"%sect%" "Folder"
IniRead desc %ini% %"%sect%" "Description"
Local aNames = List("WincmdConnected","WincmdCopyComplete","WincmdDeleteComplete","WincmdPackComplete", _
"WincmdSearchComplete","WincmdTransferComplete","WincmdUnpackComplete")
# unregister sounds
If nItem = 0 Then
For i = 0 To aNames.Count - 1
key = "HKCU\AppEvents\Schemes\Apps\Wincmd\" & aNames[i] & "\.current"
RegWrite(key, "", "REG_SZ", "")
#If ERROR = 1 Then Break
Next
RegWrite("HKCU\AppEvents\Schemes\Apps\Wincmd", "", "REG_SZ", "Total Commander")
MsgBox("Звуковая схема отключена.", "Sounds")
Return
EndIf
Local aFiles = List(), ErrLog = ""
For i = 0 To aNames.Count-1
key = aNames[i]
IniRead val %ini% %"%sect%" %"%key%"
If val = "" Then
ErrLog &= "Пустое значение ключа <" & key & "> секции [" & sect & "]"
Break
EndIf
val = DirSounds & fold & "\" & val
If FileExist(val) Then
aFiles.Add(val)
Else
ErrLog &= val & auCRLF
Endif
Next
If StrLen(ErrLog) > 0 Then
MsgBox("Не найдены файлы схемы: " & auCRLF & ErrLog, "Sounds")
Return
Endif
For i = 0 To aFiles.Count - 1
#OutputDebugString(aFiles[i])
key = "HKCU\AppEvents\Schemes\Apps\Wincmd\" & aNames[i] & "\.current"
RegWrite(key, "", "REG_SZ", aFiles[i])
#If ERROR = 1 Then Break
Next
RegWrite("HKCU\AppEvents\Schemes\Apps\Wincmd", "", "REG_SZ", "TC Test")
MsgBox("Схема <" & name & "> зарегистрирована", "Sounds")
Return
EndFunc
Код: Выделить всё
TOTALCMD#BAR#DATA
61981
%COMMANDER_EXE%
Алиса
1
-1
Ну сам-то я последний скрипт тоже на au3 переписал.Orion9 писал(а):ваш скрипт еще однозначно пригодится
Когда до этого дело дойдет. Сейчас с вашимOrion9 писал(а):разберётесь
Да, я помню, что вы хотите, чтобы везде работало, включая WinPE.AkulaBig писал(а):Ну сам-то я последний скрипт тоже на au3 переписал.
Важно отметить, что этот труд больше увлекает, чем надоедаетAkulaBig писал(а):Так что придется потрудиться.
Код: Выделить всё
Pragma IncludeOnce
Global Ping3_Thread = 0, P3_MousePosX = 0, P3_MousePosY = 0
# вызов Alt + "-"
#SetHotkeyAction /K:A /V:189 WmiTcpipTest
# коды вызова из кнопок
RegisterCommand 80003 "PingThree"
RegisterCommand 80004 "WmiTcpipTest"
RegisterCommand 80005 "GetDriverList"
Func PingThree(lParam)
If Ping3_Thread > 0 Then
Ping3_Thread = 0
Else
Ping3_Thread = 1
# прямой вызов WmiPing по коду не работает
Runthread Wmiping
Endif
EndFunc
Func WmiPing()
Local out
Local wq = WMIQuery(), pa1, pa2, pa3, pq
pa1 = "192.168.1.1"
pa2 = "192.168.1.2"
pa3 = "wincmd.ru"
# приводит к ошибке Autorun
pq1 = 'SELECT Address, ResponseTime, ResponseTimeToLive, StatusCode FROM Win32_PingStatus _
WHERE BufferSize = 32 AND Timeout = 1000 AND (Address = "' & pa1 & '" _
OR Address = "' & pa2 & '" OR Address = "' & pa3 & '")'
# рабочая запись запроса
pq = "SELECT Address, ResponseTime, ResponseTimeToLive, StatusCode FROM Win32_PingStatus _
WHERE BufferSize = 32 AND Timeout = 1000 AND (Address = '" & pa1 & "' _
OR Address = '" & pa2 & "' OR Address = '" & pa3 & "')"
#OutputDebugString(pq)
MouseGetPos("P3_MousePosX", "P3_MousePosY")
ShowPingHint("Pinging started")
While Ping3_Thread > 0
out = ''
wq.Query(pq)
If IsPressed (0x1B) Then Break
While wq.Next()
out = out & "Ping " & wq.GetValue("Address") & " " & GetPingStatus(wq.GetValue("StatusCode")) _
& " ResponseTime " & wq.GetValue("ResponseTime") & " TTL " & wq.GetValue("ResponseTimeToLive") & auCRLF
If IsPressed (0x1B) Then Break
Wend
If IsPressed (0x1B) Then Break
ShowPingHint(StrTrim(out))
If IsPressed (0x1B) Then Break
#Sleep(1000)
Wend
ShowPingHint("Pinging stoped")
Free(wq)
EndFunc
Func GetPingStatus(StatusCode)
If StatusCode = 0 Then
Return "OK"
Else
Return "##"
Endif
EndFunc
Func ShowPingHint(PingHint)
# формат подсказки
SetHintParam("ShowHint", "Font", 10, "Consolas")
SetHintParam("ShowHint", "BackColor", 0x001C1C1C)
SetHintParam("ShowHint", "Text", 0xFFFFFF)
#SetHintParam("ShowHint", "Frame", 0xFFFFFF)
ShowHint(PingHint, P3_MousePosX, P3_MousePosY)
For i = 1 To 20
#If IsPressed (0x1B) Then Break
Sleep(50)
Next
#WinSetState(23)
SetHintParam("ShowHint", "Reload")
EndFunc
Func WmiTcpipTest()
Local Outstr
Local wq = WMIQuery()
While 1
wq.Query('select * from Win32_PerfFormattedData_Tcpip_NetworkInterface')
#wq.Query('select * from Win32_PerfRawData_Tcpip_NetworkInterface')
wq.Next()
Outstr = wq.GetValue("BytesReceivedPersec") & " / " & wq.GetValue("BytesSentPersec")
If IsPressed (0x1B) Then Break
ShowHint(Outstr)
Sleep(500)
WinSetState(23)
If IsPressed (0x1B) Then
Break
Endif
Wend
Free(wq)
EndFunc
Func GetDriverList()
Local Outstr
Local wq = WMIQuery()
wq.Query('SELECT * FROM Win32_SystemDriver')
While wq.Next()
Outstr = Outstr & wq.GetValue("Caption") & " | " & wq.GetValue("Name") & auCRLF
Wend
Free(wq)
Return MsgBox(Outstr)
EndFunc