View previous topic :: View next topic |
Author |
Message |
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Fri Jun 04, 2010 12:58 Post subject: |
|
|
Quote: | Я считаю предложение sa с Autorun.wdx куда более уместное |
Конечно более уместное. Для меня более уместным один раз нажать регистрационный файл, где регистрируется не только хелпер, но десятка три библиотек.
Этот вариант я написал по просьбе НАЗАРЕТ
Quote: | Тут Helper будет регистрироваться при каждом запуске Тотала.
Если бы регистрировался при запуске скрипта, то было бы более элегантно. |
Плагин Autorun хорош, но добавлять в него Helper я не буду, каждый раз видеть окно о регистрации... (хотя может есть в Autorunе параметр непоказываемости и нажатии OK)
Quote: | скрипты загонять в ту же папку либо прописывать |
Тут речь не шла о всех скриптах - это индивидуальный вариант для данного скрипта.
Кому что необходимо, тот тем и воспользуется. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Fri Jun 04, 2010 13:06 Post subject: |
|
|
А вариант написать скрипт, который будет регистрировать хелпер только в случае, если он еще не зарегистрирован?
Или как-то узнавать при попытке вызывать функцию (если это возможно), или же записывать при его регистрации че-нибудь в реестр или какой-нибудь файлик в профиле юзера (или пользовательский параметр в wincmd.ini, там места хватит всем, а тотал его точно удалять не будет). _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 04, 2010 13:10 Post subject: |
|
|
Andrey_A wrote: | Для меня более уместным один раз нажать регистрационный файл, где регистрируется не только хелпер, но десятка три библиотек. | A причём здесь ты? НAЗAРЕТ дал чётко понять, что это нужно для работы не на домашнем PC.
Andrey_A wrote: | хотя может есть в Autorunе параметр непоказываемости и нажатии OK | Я вот и сам удивился почему ты exe-шник без параметра запускаешь. Batya только писал: "TCWSHelp.exe /REGSERVER". Andrey_A wrote: | Тут речь не шла о всех скриптах - это индивидуальный вариант для данного скрипта. | A, то есть другие скрипты, в которых будет учитываться Хелпер, ему запускать там не надо по-твоему? Andrey_A wrote: | Кому что необходимо, тот тем и воспользуется. | В том-то и дело, что понадобится на любой машине может любой скрипт. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Fri Jun 04, 2010 13:27 Post subject: |
|
|
Лично я против встраивания регистрации в скрипт, но если это кому-то надо, нужно в скрипт дописать процедуру:
Code: | 'Процедура регистрации TCScript.Helper
Sub TCScriptHelperRegistration
Dim HelperPath, Sudo
'===== Изменяемые параметры ===============================
'Путь к TCWSHelp.exe
HelperPath = "%Commander_Path%\Utils\TCWSHelp\TCWSHelp.exe"
'Путь к утилите Sudo
Sudo = "%Commander_Path%\Utils\Sudo\Sudo.exe"
'==========================================================
With CreateObject("WScript.Shell")
HelperPath = .ExpandEnvironmentStrings(HelperPath)
Sudo = .ExpandEnvironmentStrings(Sudo)
If MsgBox("Вы хотите зарегистрировать ""TCScript.Helper""?", _
vbQuestion+vbYesNo, "Регистрация ""TCScript.Helper""") = vbYes Then
.Run """" & Sudo & """ """ & HelperPath & """ /REGSERVER", 7, True
End If
End With
End Sub | Здесь укажите свой путь к TCWSHelp.exe и утилите Sudo.
А вместо строки Code: | Set TCS = CreateObject("TCScript.Helper") | нужно записать: Code: | On Error Resume Next
Set TCS = CreateObject("TCScript.Helper")
If Err.Number <> 0 Then
Err.Clear
TCScriptHelperRegistration
If Err.Number = 0 Then Set TCS = CreateObject("TCScript.Helper")
If Err.Number <> 0 Then
MsgBox """TCScript.Helper"" в системе не зарегистрирован!", vbCritical, "Ошибка"
WScript.Quit Err.Number
End If
End If
On Error GoTo 0 |
_________________ Нет, я не сплю. Я просто медленно моргаю.
Last edited by Batya on Mon Jun 07, 2010 11:16; edited 2 times in total |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Fri Jun 04, 2010 13:32 Post subject: |
|
|
MVV
Кстати, пытался вместо TCScript.Helper использовать твой TCFS2.
Не сообразил, как можно вызвать cm_InternalAssociate с последующим подтверждением.
Интерфейсные окна TCFS2 поднять не может?
P.S. Вроде где-то была утилита, которая заставляет TC выполнять команды, но не нашёл. Кто-нибудь ткнёт меня носом? Или, MVV, не наваяешь утилитку, которая из командной строки может засятавлять TC выполнять команды, в том числе с вызовом визуальных окон TC? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Fri Jun 04, 2010 14:07 Post subject: |
|
|
Batya
Спасибо за разъяснение. Всё понятно. Ещё и на будущее пригодится точно. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 04, 2010 21:36 Post subject: |
|
|
Batya wrote: | P.S. Вроде где-то была утилита, которая заставляет TC выполнять команды, но не нашёл. Кто-нибудь ткнёт меня носом? | Оно? Или может эта? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Mon Jun 07, 2010 11:20 Post subject: |
|
|
Изменил процедуру регистрации TCScript.Helper - см. выше. Теперь используется утилита Sudo для возможности запустить регистрацию от имени администратора. Это нужно для Windows 7 и Vista с включённым UAC. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Mon Jun 07, 2010 12:30 Post subject: |
|
|
Batya wrote: | Кстати, пытался вместо TCScript.Helper использовать твой TCFS2.
Не сообразил, как можно вызвать cm_InternalAssociate с последующим подтверждением.
Интерфейсные окна TCFS2 поднять не может? |
Команду cm_InternalAssociate из TCFS2 по идее можно вызвать, используя tcm(519). А вот управлять окном ассоциаций из TCFS2 уже не получится - она отправляет сообщения только главному окну ТК, а чтобы закрыть окно внутренних ассоциаций, нужно работать с ним (найти в нем нужное дочернее окно-кнопку и послать ему WM_LBUTTONDOWN и WM_LBUTTONUP - в дельфе идентификаторы кнопок динамические, поэтому просто отправить WM_COMMAND с wParam=1, как любому нормальному диалоговому окну, не получится, да и саму кнопку по идентификатору не выщемить, что сильно усложняет скриптописание).
Flasher wrote: | Batya wrote: | P.S. Вроде где-то была утилита, которая заставляет TC выполнять команды, но не нашёл. Кто-нибудь ткнёт меня носом? | Оно? Или может эта? |
Я знаю только TCMC.
Batya wrote: | Или, MVV, не наваяешь утилитку, которая из командной строки может засятавлять TC выполнять команды, в том числе с вызовом визуальных окон TC? |
Что ты понимаешь под "вызовом визуальных окон"? Насколько я знаю, официально ТК поддерживает только WM_USER+51 с кодом cm-команды и WM_COPYDATA с em-командами и командой cd. Все это есть в TCMC. Но закрыть дочернее окно она тоже не поможет. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Jun 07, 2010 13:12 Post subject: |
|
|
MVV wrote: | Все это есть в TCMC. Но закрыть дочернее окно она тоже не поможет. | Я про него также подумал и, соответственно, про невозможность последующего закрытия. Поэтому не стал предлагать. |
|
Back to top |
|
|
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Tue Mar 22, 2011 10:34 Post subject: |
|
|
Code: | ' Переименование секции [Associations] в [-Associations] с обновленим значков и обратно
' Кнопка вкл\выкл внутренних ассоциаций
Option Explicit
Dim FSO, TCS, F1, F2, Str1, Str2, Str3, Str4, Text1, Text2
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set TCS = CreateObject("TCScript.Helper")
If Err.Number <> 0 Then
Err.Clear
TCScriptHelperRegistration
If Err.Number = 0 Then Set TCS = CreateObject("TCScript.Helper")
If Err.Number <> 0 Then
MsgBox """TCScript.Helper"" в системе не зарегистрирован!", vbCritical, "Ошибка"
WScript.Quit Err.Number
End If
End If
On Error GoTo 0
F1 = "%COMMANDER_PATH%\bar\1.bar"
Str1 = "%COMMANDER_PATH%\Icons\81.ico"
Str2 = "%COMMANDER_PATH%\Icons\82.ico"
F2 = "%COMMANDER_PATH%\WinCmd.ini"
Str3 = "[Associations]"
Str4 = "[-Associations]"
F1 = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(F1))
F2 = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(F2))
Text1 = FSO.OpenTextFile(F1, 1).ReadAll
Text2 = FSO.OpenTextFile(F2, 1).ReadAll
If bCheck Then
Text1 = Replace(Text1, Str2, Str1, 1, -1, 1)
Text2 = Replace(Text2, Str4, Str3, 1, -1, 1)
Else
Text1 = Replace(Text1, Str1, Str2, 1, -1, 1)
Text2 = Replace(Text2, Str3, Str4, 1, -1, 1)
End If
FSO.OpenTextFile(F1, 2).Write Text1
FSO.OpenTextFile(F2, 2).Write Text2
With TCS
.LockTC True
.Pause = 100
.SendCommand "cm_ButtonConfig"
.SendKeystroke "{Tab}"
.SendKeystroke "{Enter}"
.SendCommand "cm_InternalAssociate"
.SendKeystroke "{Enter}"
End With
Set TCS = Nothing
Set FSO = Nothing
WScript.Quit
Function bCheck()
Dim sFile
sFile=WScript.ScriptFullName
bCheck=TCS.INIRead(sFile, "Ass", "Line", 0)
TCS.INIWrite sFile, "Ass", "Line", Not bCheck
End Function
[Ass]
Line =-1
'Процедура регистрации TCScript.Helper
Sub TCScriptHelperRegistration
Dim HelperPath, Sudo
'===== Изменяемые параметры ===============================
'Путь к TCWSHelp.exe
HelperPath = "%Commander_Path%\scripts\TCWSHelp.exe"
'Путь к утилите Sudo
Sudo = "%Commander_Path%\scripts\Sudo.exe"
'==========================================================
With CreateObject("WScript.Shell")
HelperPath = .ExpandEnvironmentStrings(HelperPath)
Sudo = .ExpandEnvironmentStrings(Sudo)
CreateObject("WScript.Shell").Run """" & Sudo & """ """ & HelperPath & """ /REGSERVER", 7, True
End With
End Sub |
Если файлы 1.bar и wincmd.ini в кодировки Юникод, а не ANSI, то скрипт не работает, а именно очищает содержимое этих файлов.
Как поправить скрипт? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Tue Mar 22, 2011 12:15 Post subject: |
|
|
HA3APET wrote: | Если файлы 1.bar и wincmd.ini в кодировки Юникод, а не ANSI, то скрипт не работает, а именно очищает содержимое этих файлов.
Как поправить скрипт? |
Попробуй при вызовах метода OpenTextFile добавить 2 параметра:
Code: | Text1 = FSO.OpenTextFile(F1, 1, False, -1).ReadAll
Text2 = FSO.OpenTextFile(F2, 1, False, -1).ReadAll
.
.
.
FSO.OpenTextFile(F1, 2, False, -1).Write Text1
FSO.OpenTextFile(F2, 2, False, -1).Write Text2 |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Tue Mar 22, 2011 12:26 Post subject: |
|
|
Batya
Заработало!
Спасибо. |
|
Back to top |
|
|
ask-rus
Joined: 10 Nov 2009 Posts: 2076 Location: Russian Federation
|
(Separately) Posted: Thu Jun 09, 2011 09:04 Post subject: |
|
|
Кнопка отключения и включения TC-ассоциаций с перезапуском TC может быть построена без хелпера (портабельность)? Замена секции [Associations] на [-Associations] + перезапуск, без излишеств. _________________ «Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jun 09, 2011 11:37 Post subject: |
|
|
Скрипт может. Тут всего-то - найти строку, сравнить и изменить, потом перезапуск. |
|
Back to top |
|
|
|
|
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
|