Страница 148 из 243

Добавлено: Ср окт 30, 2024 17:02
yahuu
Как удобно получить текст из элемента управления?
Можно ли добавить функцию: controlgettext? Я хочу отдельно получить количество выбранных файлов и папок в строке состояния.

Добавлено: Ср окт 30, 2024 21:20
Loopback
yahuu
Используйте WinGetText. Хэндл нужного элемента управления можно получить с помощью RequestInfo или, для произвольного элемента управления, с WinFind. Ниже пример получения текста строки состояния активной панели:

Код: Выделить всё

MsgBox(WinGetText(RequestInfo(10003)))

Добавлено: Пт ноя 01, 2024 06:35
yahuu
Спасибо. Когда я использовал StrPart, я заметил, что в примере синтаксис неправильный. sDay = StrPart("Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday","|", nDay) не хватает одной запятой.

Добавлено: Чт ноя 07, 2024 13:29
yahuu
Эти два примера также содержат грамматические ошибки:

FileGetTime
fi = IniRead("IniPath, "Main", "Wincmd.ini", 0)

ControlSetMouseAction
ControlSetMouseAction /R /H:64 0 CommandExec em_Lang %"IniRead('~/R', %COMMANDER_INI%, 'Configuration', 'LanguageIni')"

Добавлено: Чт ноя 07, 2024 18:23
jentoso
Возможно ли использовать через Autorun плагины из TWinKey (ClockDLL.dll, muCalc.dll, TCDirMenu.dll)?

Добавлено: Чт ноя 07, 2024 18:52
Loopback
yahuu
Действительно. Исправил, спасибо.

jentoso
Нет, конечно, у тех плагинов свой интерфейс.

Добавлено: Чт ноя 07, 2024 19:04
Orion9
Loopback

Спасибо, что держите руку на пульсе. Плагин развивается, и это радует :)

А я, между прочим, еще никак не могу нарадоваться кнопке "Autorun", вместо стандартной и бесполезной "Alt+F4 Выход" :lol:

Заметил, что вы усовершенствовали-таки функцию GetState("vars"), и теперь она выдает содержательные данные. Но не думаете, что [Global] Envrs слишком раздувает объем информации из-за большого размера? Может, как-то отдельно выводить данные о переменных окружения?

Добавлено: Чт ноя 07, 2024 19:36
Loopback
Orion9 писал(а):Но не думаете, что [Global] Envrs слишком раздувает объем информации из-за большого размера?
По умолчанию в Autorun нет такой переменной. Ну и потом, что значит "раздувает"? Если есть какая-то переменная я хочу видеть, что она содержит, неважно, много или мало.

В конце-концов всегда можно сделать свою функцию, которая будет убирать неугодные переменные из вывода.
Orion9 писал(а):Может, как-то отдельно выводить данные о переменных окружения?
А вот насчет списка переменных окружения - да, это может быть полезно.

Добавлено: Пт ноя 08, 2024 00:08
Orion9
Loopback
Да, вы правы: я тут не разобрался - давно файлы конфигурации не открывал )

Добавлено: Пт ноя 08, 2024 11:25
Orion9
Loopback
А ведь справка значительно набрала в весе! Надо будет найти время нагнать все упущенное, но работа у вас явно не стоит на месте )

yahuu

Код: Выделить всё

Func ShowFullPathInTitle
   While 1
      srcPath = RequestCopyDataInfo(RequestCopyDataInfo("A") & "P")
      srcName = RequestCopyDataInfo(RequestCopyDataInfo("A") & "N")
      WinSetText(srcPath & srcName)
   Wend
EndFunc 
В таких циклах желательно использовать Sleep(), иначе будет большая нагрузка на CPU и медленная работа самого TC.

yozhik

Код: Выделить всё

# если в процессе загрузки мы вызываем сторонние утилиты, то фокус может улетать от окна TC
# возвращаем его обратно
WinSetState(23)
Очень важный нюанс. Взял себе на заметку :wink:

Добавлено: Пт ноя 08, 2024 16:52
sa
Orion9 писал(а):А ведь справка значительно набрала в весе!
Так и две новые beta-версии (2.2.13 и 2.2.14) осенью выложены!

Добавлено: Пт ноя 08, 2024 23:32
Orion9
sa писал(а):Так и две новые beta-версии (2.2.13 и 2.2.14) осенью выложены!
Да, фигово когда экзамен на носу, а ты прогулял полсеместра )

Справка, конечно, чертовски хороша: все так классно упорядочено, столько полезных функций добавлено - изучай не хочу ) А отмазка, что компютера не было под рукой, нынче не прокатывает :mrgreen:

Добавлено: Сб ноя 09, 2024 13:13
Orion9
Гы-гы...) Первая лабораторка в году сделана )) Пока не предусмотрена обработка значений по-умолчанию, но вариант уже рабочий. Равномерное изменение тональности фона в панелях клавишами Ctrl+Shift+"+" и Ctrl+Shift+"-"

[cut]

Код: Выделить всё

SetHotkeyAction /K:C /K:S /V:187 SetBackGround 1
SetHotkeyAction /K:C /K:S /V:189 SetBackGround 2

Func SetBackGround(pAction)
Local bkg1, bkg2, upd = 1

   IniRead /R bkg1 %COMMANDER_INI% "Colors" "BackColor" -1
   IniRead /R bkg2 %COMMANDER_INI% "Colors" "BackColor2" -1
   
   if bkg1 = -1 or bkg2 = -1 then
      MsgBox("Default value in bkg1 or bkg2")
      Return
   endif
   
   if pAction = 1 then
      bkg1 = bkg1 + 1 + 256 + 65536
      bkg2 = bkg2 + 1 + 256 + 65536      
   else
      bkg1 = bkg1 - 1 - 256 - 65536
      bkg2 = bkg2 - 1 - 256 - 65536      
   endif
   
   if bkg1 < -1 or bkg2 < -1 then
      MsgBox("bkg1 или bkg2 is out of range")
      Return
   endif
   
   IniWrite /R %COMMANDER_INI% "Colors" "BackColor" %bkg1%
   IniWrite /R %COMMANDER_INI% "Colors" "BackColor2" %bkg2%
   
   If upd = 1 Then
      SendCommand 2957
   EndIf      
EndFunc
[/cut]
А ведь можно из этого большее выжать :wink:

Autorun - сила страшная!

Добавлено: Сб ноя 09, 2024 19:24
Orion9
Дополнительно задание к Лабораторной работе №1 - "Пульсар коммандера" :mrgreen:

[cut]

Код: Выделить всё

Global Pulsar = 0

SetHotkeyAction /K:C /K:S /V:187 SetBackGround 1
SetHotkeyAction /K:C /K:S /V:189 SetBackGround 2

SetHotkeyAction /K:C /V:187 SetPulsar 1
SetHotkeyAction /K:C /V:189 SetPulsar 0

Func SetBackGround(pAction)
Local bkg1, bkg2, upd = 1, max

   max = 1*255 + 256*255 + 65536*255
   
   IniRead /R bkg1 %COMMANDER_INI% "Colors" "BackColor" -1
   IniRead /R bkg2 %COMMANDER_INI% "Colors" "BackColor2" -1
   
   if bkg1 = -1 then bkg1 = max
   if bkg2 = -1 then bkg2 = max
   
   if pAction = 1 then
      bkg1 = bkg1 + 1 + 256 + 65536
      bkg2 = bkg2 + 1 + 256 + 65536      
   else
      bkg1 = bkg1 - 1 - 256 - 65536
      bkg2 = bkg2 - 1 - 256 - 65536      
   endif
   
   if bkg1 > max then bkg1 = -1
   if bkg2 > max then bkg2 = -1   
   
   if bkg1 < -1 then bkg1 = max 
   if bkg2 < -1 then bkg2 = max    
   
   IniWrite /R %COMMANDER_INI% "Colors" "BackColor" %bkg1%
   IniWrite /R %COMMANDER_INI% "Colors" "BackColor2" %bkg2%
   
   If upd = 1 Then
      SendCommand 2957      
      SendCommand 2957
   EndIf      
EndFunc

Func SetPulsar(nParam)

   if nParam = 1 and Pulsar = 1 then Return
   
   Pulsar = nParam
  
   While Pulsar = 1
   
      For j = 1 To 2      
         For i = 1 To 100
             SetBackGround(j)
             Sleep(20)
             if Pulsar = 0 then Return
         Next
      Next
      
   Wend
   
EndFunc 
[/cut]
Запуск/Остатовка - Ctrl+"+" и Ctrl+"-"

Добавлено: Сб ноя 09, 2024 19:41
yahuu

Код: Выделить всё

[em_ProcessBar]
cmd=OPENBARMENU
param=%|COMMANDER_PATH|\USER\Bars\process.bar

Код: Выделить всё

Func DisplayProcessBar
	CommandExec em_ProcessBar
	Как получить текущую координату Y курсора ??
	WinSetPos("", y,"","","", WinFind(0, "#32768")) ??
EndFunc
Как WinFind найти "окно" #32768? Или меню?
Я хочу переместить это меню в позицию курсора.
Как получить координаты курсора?