Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Autorun
Goto page Previous  1, 2, 3 ... 46, 47, 48 ... 131, 132, 133  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Wed Jan 02, 2013 19:34    Post subject: Reply with quote

да, вот сделал пример для функции ProcessExecGetOutput:
если в конфиге много комманд, строку нужно добавлять где-то в середину конфига.
вторую строчку лучше ближе в конец конфига

Code:
# Получение версии ОС с помощью командной строки Windows
ProcessExecGetOutput OSVER %COMSPEC% '/c ver'

# Создание переменной содержащей версию Windows
SetEnv /EV COMMANDER_OSVER "%OSVER%"
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Jan 03, 2013 01:06    Post subject: Reply with quote

Loopback wrote:
Это может быть связано, например, с командой получения SID, поскольку скрипт выполняется достаточно медленно. Попробуй ее перенести в самый конец секции загрузки.
Лучше просто как следует передавать поток, не давая скрипту пройти весь цикл. Делается либо указанием возвращаемых атрибутов вместо * и выходом из цикла Exit For
Code:
For Each Item In GetObject("winmgmts://./root/CIMV2").ExecQuery("SELECT SID FROM Win32_UserAccount where" &_
" Name='" & CreateObject("WScript.Network").UserName & "'") : WScript.Stdout.Write Item.SID : Exit For : Next
либо (что ещё лучше) напрямую с получением сида из дочернего объекта WMI:
Code:
With CreateObject("WScript.Network")
WScript.Stdout.Write GetObject("winmgmts:\\.\root\CIMV2:Win32_UserAccount.Domain='" & .UserDomain & "',Name='" & .UserName & "'").SID
End With

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1281

Post (Separately) Posted: Thu Jan 03, 2013 13:28    Post subject: Reply with quote

KopBuH wrote:
да, вот сделал пример для функции ProcessExecGetOutput:

Ок, можно будет добавить, но все что касается плагинов - только в закомментированном виде.

Flasher
Твой вариант, теоретически, более оптимален. Но ты пробовал сравнивать время отработки скрипта? Уверен, что на десятке учетных записей это будут миллисекунды. Я же при вызове cscript наблюдаю задержку минимум полсекунды. Визуально разницы между двумя вариантами не заметил. Так что скорее всего это издержки именно cscript.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Jan 03, 2013 14:04    Post subject: Reply with quote

Loopback
10 учёток и 16 атрибутов - миллисекунды? Ну, не знаю. WMI сам по себе долго свою базу загружает. К тому же текущая учётка может оказаться в конце списка, как у меня, например. Мой опыт подсказывает, что это могут быть и доли секунды, при большом списке - секунда и более. Могу, конечно, накидать отладочный скрипт - проверить, но у меня нет и 10-ти учёток.
А полсекунды (да ещё и минимум) - это уже не мало, с учётом того, сколько всего в autorun-е другого вызывается. И это уже не теория.
А два варианта - какие имеешь в виду? Оба - мои? Или твой и какой-то из моих?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1281

Post (Separately) Posted: Thu Jan 03, 2013 19:37    Post subject: Reply with quote

Flasher
Мой и твой второй.

Да я, собственно, и не спорю, что оптимизированные решения лучше. Просто это тот случай, когда оптимизация незаметна. Может быть на сотне учеток будет заметнее, не знаю.

Кстати, для сравнения, команда ver отрабатывает значительно быстрее. Но все равно с заметной задержкой.
Back to top
View user's profile Send private message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Fri Jan 04, 2013 13:19    Post subject: Reply with quote

слушай, Loopback
а не мог бы ты добавить определение в переменной %AUTORUN_OSVERSION% среды Preinstallation Environment (PE), а Smile ?
и еще сделать бы переменную с языком текущей ОС, например %AUTORUN_OSLANG%, хотя бы русский и английский? Rolling Eyes

сейчас я делаю это так:
Code:
# Проверка локализации (языка) ОС
RegRead COMMANDER_OSLANG "HKCU\Control Panel\International" "Locale" "unknown"
If %COMMANDER_OSLANG% = 00000419 Then
  SetEnv COMMANDER_OSLANG "Rus"
ElseIf %COMMANDER_OSLANG% = 00000409 Then
  SetEnv COMMANDER_OSLANG "Eng"
Else
  SetEnv COMMANDER_OSLANG "Unknown"
EndIf

а коды языков можно взять здесь:
http://www.science.co.il/language/locale-codes.asp
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1281

Post (Separately) Posted: Fri Jan 04, 2013 14:16    Post subject: Reply with quote

KopBuH wrote:
а не мог бы ты добавить определение в переменной %AUTORUN_OSVERSION% среды Preinstallation Environment (PE), а ?

Если это можно определить программно. Я поискал - что-то не нашел ничего полезного.
KopBuH wrote:
сейчас я делаю это так:

И чем же плох способ? Вполне корректно и надежно. Ну я понимаю еще, если бы способа не было или он был запредельно сложный.

Если я сделаю такую переменную, то язык она будет содержать только в виде, который можно получить напрямую: либо код языка (en, ru), либо его LSID (00000419). Потому что
KopBuH wrote:
хотя бы русский и английский

такой вариант неприемлем.
Back to top
View user's profile Send private message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Fri Jan 04, 2013 14:54    Post subject: Reply with quote

Loopback wrote:

И чем же плох способ? Вполне корректно и надежно. Ну я понимаю еще, если бы способа не было или он был запредельно сложный.

либо код языка (en, ru), либо его LSID (00000419). Потому что
KopBuH wrote:
хотя бы русский и английский

такой вариант неприемлем.


LSID подойдет.
только если без нолей в начале. например просто 419.
а имя переменной такое например: %AUTORUN_OSLANGID%
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Jan 04, 2013 17:59    Post subject: Reply with quote

Loopback wrote:
либо код языка (en, ru)
Лучше код. Его же сразу задействовать можно. LSID ни к селу, ни к городу.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Fri Jan 04, 2013 19:42    Post subject: Reply with quote

Да, прямой код лучше.
но всё дело в том, что в XP код языка в реестре еще не придумали, и там есть только параметр Locale, содержащий числовой код.
вот именно поэтому я сделал универсальный вариант с числовым значением.
в Win7/8 есть параметр LocaleName содержащий строковой код, типа "ru-RU"
Loopback, глянь его здесь:
HKCU\Control Panel\International
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Jan 04, 2013 21:21    Post subject: Reply with quote

Не знаю точно, что там в реестре XP, но никто не пишет про получение данных из него, есть же API типа GetCPInfo, GetLocaleInfo и т.п. И никто не мешает автору программно сопоставить с ID коды языков.

Есть, кстати, и другие ветки:
HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\
HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language\
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
KopBuH



Joined: 02 Jul 2010
Posts: 127
Location: Tashkent, Uzbekistan

Post (Separately) Posted: Sat Jan 05, 2013 09:43    Post subject: Reply with quote

Flasher wrote:

Есть, кстати, и другие ветки:
HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\
HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language\

такие ветки есть. и да, по второй ветке указана локализация при установке системы.
но про выше упомянутому мной ключу реестра, а именно HKCU\Control Panel\International находится код локализации именно текущего пользователя. дело в том, что сам Windows может быть английским, но локализация пользовательской среды - русской. имхо, тогда лучше определять значение из HKCU, ведь именно под ним и будет запускаться ТС.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1281

Post (Separately) Posted: Sat Jan 05, 2013 15:05    Post subject: Reply with quote

Читать реестр я, разумеется, не буду. Для этого есть функция GetLocaleInfo. В висте и выше есть ее расширенный вариант, но ограничивать использование этими системами преждевременно.

Функция возвращает много разных значений, но здесь применимы только два: LCID (0419) или трехбуквенная аббревиатура языка (RUS). Не исключено, что последняя будет коррелировать с именами языков TC.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jan 05, 2013 15:34    Post subject: Reply with quote

Loopback
Сойдёмся на алфавитных кодах языков по ISO 639-3?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Jan 05, 2013 15:50    Post subject: Reply with quote

Зачем встраивать то, что элементарно реализуется 5 строчками Autorun-скрипта (благодаря функциям чтения из реестра) и за несколько лет существования плагина понадобилось 1 раз?
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 46, 47, 48 ... 131, 132, 133  Next
Page 47 of 133

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group