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 ... 43, 44, 45 ... 132, 133, 134  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Loopback



Joined: 07 Sep 2009
Posts: 1283

Post (Separately) Posted: Mon Dec 24, 2012 22:00    Post subject: Reply with quote

KopBuH wrote:
вот если бы была поддержка чтения из WMI

Не, внутреннюю поддержку этого я делать не буду.

Хотя, если модифицировать идею MVV без использования ini, можно попробовать сделать захват стандартного вывода запускаемой программы. Тогда, если сделать скрипт или экзешник, выводящие информацию в stdout, ее можно будет получать сразу в скрипте.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Mon Dec 24, 2012 23:15    Post subject: Reply with quote

Loopback, такой функции самое место в отдельном плагине.
А вообще, не думаю, что такая уж и проблема выдать результат в инишник во временной папке... на то она и временная.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KopBuH



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

Post (Separately) Posted: Wed Dec 26, 2012 20:40    Post subject: Reply with quote

ждем функцию RegRead.
чтобы можно было выставлять тип значения - REG_DWORD REG_SZ и т.п. Smile

например, так:

Code:
RegRead AutorunKey "HKLM\Software\TC_Autorun" "sz" "AutorunKey" "Autorun"

отсюда: переменная, путь ключа в реестре, тип значения, имя значения, значение по умолчанию.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Wed Dec 26, 2012 22:20    Post subject: Reply with quote

Зачем указывать тип? Строка всегда будет возвращаться в виде строки (ololo), число - тоже в виде строки (4660 или $1234), зачем тут тип указывать? Переменные всё равно в плагине бывают только строковые, а тип параметра прекрасно возвращает функция RegQueryValueEx.
Нужны только имя переменной, адрес ключа и имя значения, ну и значение по умолчанию. В качестве параметра вижу уточнение, в какой системе возвращать число - в десятеричной или шестнадцатеричной.
Code:
RegRead [/HEX] <имя_переменной> <адрес_ключа> <имя_значения> [<текст_по_умолчанию>]

Параметр /HEX - чтобы возвращать число в виде $1234, а не в виде 4660, на строки влиять вообще не должен. Если вместо имени ключа заданы пустые кавычки, читать значение (По умолчанию) - впрочем, это даже реализовывать не нужно, RegQueryValueEx и так прочитает значение по умолчанию, если указано пустое имя значения.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1283

Post (Separately) Posted: Thu Dec 27, 2012 11:49    Post subject: Reply with quote

По поводу RegRead согласен с MVV, указание типа при чтении - излишне. Да и по остальной логике возражений нет, как-то так и я себе ее представлял.

MVV wrote:
такой функции самое место в отдельном плагине.

В этом случае в плагине придется по-сути повторять функционал ShellExec. Есть ли смысл? Можно просто опционально добавить чтение потока сразу после запуска в переменную. Должно уместиться в десяток строк кода.
Нет, лучше действительно в плагин. Практически все ключи ShellExec неприменимы, а сопутствующего кода оказалось больше (перекодировка).
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1283

Post (Separately) Posted: Fri Dec 28, 2012 18:22    Post subject: Reply with quote

Одиннадцатая бета.

Скачать

Изменения:

Code:

+ команда ProcessExecGetOutput в плагине Process
+ команда RegRead


Вообще процесс развития - он бесконечен, поэтому, если ничего не выплывает критического, я бы хотел сделать релиз.

Flasher
По поводу дефолтных значений ini. Я не смог повторить проблему. Сейчас логика такая: заданное дефолтное значение используется в случае, если ключ отсутствует в ini. Если ключ есть - используется его значение, в том числе пустое.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Dec 28, 2012 18:37    Post subject: Reply with quote

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



Joined: 07 Sep 2009
Posts: 1283

Post (Separately) Posted: Fri Dec 28, 2012 20:43    Post subject: Reply with quote

Flasher
А, нашел, спасибо за наводку. Это не в IniRead ошибка была, а с операторами and/or, которые обрабатывались регистрозависимо.

Версию обновил по той же ссылке.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Dec 29, 2012 13:41    Post subject: Reply with quote

Loopback
Сейчас порядок. Можно релизить. Отдельное мерси за RegRead, начинаю уже прикручивать. Smile
Про stdout пока не думал. Есть какие-то идеи? Что там из полезного окромя cmd у нас выводит?
_________________
Автору сборки 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 Dec 29, 2012 14:41    Post subject: Reply with quote

Loopback
вроде сделал проверку локализации ОС:
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 "%COMMANDER_OSLANG%"
EndIf

в принципе, всё работает, спасибо.
но иногда почему то вылазиют странные сообщения плагина при выходе из ТС.
причем не всегда Sad .

и еще:
является ли такой код правильным: (переменная "%ShowHiddensOnStart%" и "%COMMANDER_ASADMIN%" уже создана)
Старый код: (10-ая бета)
Code:
If %ShowHiddensOnStart% = 0 Then
ElseIf %COMMANDER_ASADMIN% = 1 Then
  ShellExec /EV "%COMMANDER_PATH%\Macroses\nircmd%COMMANDER_ARCH%.exe" "win show class TTOTAL_CMD"
Else
EndIf

Новый код: (11-ая бета)
Code:
If %ShowHiddensOnStart% = 0 Then
ElseIf %COMMANDER_ASADMIN% = 1 Then
  ShellExec /EV "%COMMANDER_PATH%\Macroses\nircmd%COMMANDER_ARCH%.exe" "win show class TTOTAL_CMD"
EndIf

как видите, там я удалил строку else, поскольку ничего выполнять не нужно. вроде пока проблем не наблюдаю. или else всё же должна быть?. (сообщения об ошибках исчезли вроде именно после того, как я везде убрал эту else. но в 10-ой бетке такого не наблюдалось )


P.S.: Loopback, добавил бы в autorun.example.cfg пару примеров работы с RegRead
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1283

Post (Separately) Posted: Sun Dec 30, 2012 20:02    Post subject: Reply with quote

Flasher wrote:
Про stdout пока не думал. Есть какие-то идеи? Что там из полезного окромя cmd у нас выводит?

В первую очередь - cscript. Для меня - Autoit, конечно.

Ну вот, например, очень специфический запрос KopBuH по получению SID. Теперь его можно вытащить скриптом через WMI. Скрипт (get_sid.vbs):
Code:

On Error Resume Next

Set strUserName = ""
Set WshShell  = WScript.CreateObject( "WScript.Shell" )
Set WshSysEnv = WshShell.Environment( "PROCESS" )
strUserName   = WshSysEnv( "USERNAME" )

Set objWMIService = GetObject( "winmgmts://./root/CIMV2" )

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount", "WQL", &h30)

For Each objItem In colItems
   If LCase( objItem.Name ) = LCase( strUserName ) Then
      WScript.Stdout.Write objItem.SID
   End If
Next


Строка запуска в Autorun:
Code:

ProcessExecGetOutput SID cscript.exe "//Nologo get_sid.vbs"
SetEnv /EV USER_SID %SID%


KopBuH wrote:
но иногда почему то вылазиют странные сообщения плагина при выходе из ТС. причем не всегда

Странно, не наблюдал ничего такого странного.
KopBuH wrote:
является ли такой код правильным:

Можно в любой комбинации, минимально If..Endif.
Тут возникает другой вопрос - а зачем нужно условие%ShowHiddensOnStart% = 0, если оно ничего не делает.

KopBuH wrote:
P.S.: Loopback, добавил бы в autorun.example.cfg пару примеров работы с RegRead

Есть идеи? Нужно что-то применимое для многих.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Dec 30, 2012 20:13    Post subject: Reply with quote

Loopback wrote:
В первую очередь - cscript. Для меня - Autoit, конечно.
Я не думаю, что вообще есть смысл использовать скрипты для вывода потока, чтобы получить какое-то значение, записываемое в переменную среды, которое потом тем же скриптингом и будет обрабатываться. В этом нет практического смысла, на мой взгяд (если не брать какие-то совсем простые операции типа создания одноимённых папок и т.п.). Или, может, я чего не улавливаю?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1283

Post (Separately) Posted: Sun Dec 30, 2012 20:21    Post subject: Reply with quote

Flasher wrote:
Или, может, я чего не улавливаю?

Скрипт может менять унаследованную переменную окружения, но в родительском процессе эти изменения не отразятся.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Dec 30, 2012 20:30    Post subject: Reply with quote

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



Joined: 07 Sep 2009
Posts: 1283

Post (Separately) Posted: Sun Dec 30, 2012 21:09    Post subject: Reply with quote

Flasher
Родительский процесс - Тотал с загруженным Autorun. Переменная окружения, созданная в Autorun, будет видна во внешнем (запускаемом из Autorun) скрипте, но не может быть им изменена. Созданная во внешнем скрипте переменная вообще не будет видна в скрипте Autorun (и в ТС).

Так что передача через stdout, на мой взгляд, самый простой и удобный способ передать информацию в Autorun.
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 ... 43, 44, 45 ... 132, 133, 134  Next
Page 44 of 134

 
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