Orion9

|
Posted: Mon Feb 09, 2026 13:27 Post subject: |
|
|
FallenAngel
Нужно просто отформатировать строку через StrFormat. Т.е. вместо:
| Code: | Round(nRecvSpeed / 1000, 2) & ' ↑ ' & Round(nSendSpeed / 1000, 2) & ' mb/s' |
Должно быть:
| Code: | StrFormat("%02.2f", Round(nRecvSpeed / 1000, 2)) & ' ↑ ' & StrFormat("%02.2f", Round(nSendSpeed / 1000, 2)) & ' mb/s' |
Может вам так больше понравится.
| Quote: | | Это строка тут лишняя, ИМХО. |
Ну если лишняя, можно убрать )
А что на счет фокуса? У меня он не теряется. Но если у вас теряется, можно принудительно его вернуть через WinSetState:
| Code: | WinSetPos(x, y, w, h, "", hWnd)
WinSetState(23, hWnd) |
А вот и линксы, как обещал:
 Hidden text | Code: | RegisterCommand 60043 "CompareTwoFiles"
RegisterCommand 60044 "CompareTwoFilesDialog"
Func CompareTwoFiles()
Local sTool, nDialogMode = 1
# чтение ключа
sTool = IniRead("~/R", COMMANDER_INI, "Configuration", "CompareTool", "")
# раскрытие переменных окружения
sTool = Set(sTool)
# проверка существования файла
If FileExist(sTool) Then
# файл существует
# послать команду сравнения и выйти
SendCommand(2022) # cm_CompareFilesByContent
Return
EndIf
If nDialogMode = 1 Then Return CompareTwoFilesDialog(sTool)
# файл не существует
MsgBox("Инструмент сравнения не найден " & sTool & auCRLF & auCRLF & _
"Загрузить из Интернета?", "Autorun", 3+0+48)
# нажата кнопка "Нет"
If EXTENDED = 7 Then SendCommand(2040) # cm_IntCompareFilesByContent
# не нажата кнопка "Да", выйти из скрипта
If EXTENDED <> 6 Then Return
# запуск батника для загрузки
ShellExec(COMMANDER_PATH & "\Scripts\WinMergeDownload.bat")
EndFunc
Func CompareTwoFilesDialog(FilePath)
Local lst = List()
lst.Add("Сравнить внутренним" & auLF & "Будет использован внутренний инструмент сравнения Total Commander")
lst.Add("Загрузить из интернета" & auLF & "https://winmerge.org/downloads/?lang=ru")
Local nRet = MsgBoxLinks(1, "Инструмент сравнения не найден", FilePath, lst)
Free(lst)
If nRet = 2 Then Return
If nRet = 1001 Then
SendCommand(2040) # cm_IntCompareFilesByContent
Else
ShellExec(COMMANDER_PATH & "\Scripts\WinMergeDownload.bat")
EndIf
EndFunc
#{
Icon:
1 - Warning
2 - Error
3 - Information
4 - Shield
ByRef: List() of 1-3 elements
Returns: 1001-1003, 2 for cancel
#}
Func MsgBoxLinks(Icon, Header, Message, ByRef Links)
If Abs(Icon) > 4 Then Icon = 2
Icon = 65536 - Icon
If Links.Count = 0 Then Return MsgBox("Links not specified")
Local Res, Ret
Local buf = Buffer(auX64 ? 160 : 96), _
ttl = Buffer(16), _
hdr = Buffer(StrLen(Header)*2+2), _
msg = Buffer(StrLen(Message)*2+2), _
lnk = Buffer(auX64 ? 48 : 24)
ttl.SetStr("Autorun" & Chr(0))
hdr.SetStr(Header & Chr(0))
msg.SetStr(Message & Chr(0))
Local b1 = Buffer(512), b2 = Buffer(512), b3 = Buffer(512)
b1.Zero()
b2.Zero()
b3.Zero()
b1.SetStr(Links[0] & Chr(0))
If Links.Count > 1 Then b2.SetStr(Links[1] & Chr(0))
If Links.Count > 2 Then b3.SetStr(Links[2] & Chr(0))
lnk.Zero()
lnk.SetNum(0, "int", 1001, _
"ptr", b1.ptr, _
"int", 1002, _
"ptr", b2.ptr, _
"int", 1003, _
"ptr", b3.ptr)
buf.Zero()
buf.SetNum(0, "uint", buf.size, _
"hwnd", AUTORUN_TCHANDLE, _
"handle", 0, _
"dword", 0x0019, _
"dword", 0x0008, _
"ptr", ttl.ptr, _
"ptr", Icon, _
"ptr", hdr.ptr, _
"ptr", msg.ptr, _
"uint", Links.Count, _
"ptr", lnk.ptr)
Res = DllCall("TaskDialogIndirect", _
"ptr", buf.ptr, _
"int*", @Ret, _
"int*", 0, _
"bool*", 0, "hresult")
Free(buf, ttl, hdr, msg, lnk, b1, b2, b3)
Return Ret
EndFunc |
Ну не персик ли?
 PS Если персик не нужен, можно изменить nDialogMode = 1 на любое значение |
|