Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Утилита для перехода в заданный раздел реестра

Ответить
Настройки темы
[решено] Утилита для перехода в заданный раздел реестра

(*.*)


Сообщения: 36570
Благодарности: 6700


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать




Исходники версии 0.6 входят в комплект с программой.

Текущий скрипт для компиляции утилиты
Текущий скрипт для тех, кто желает выбрать способ перехода в реестр
Текущий английский языковой файл (образец для перевода)

Разработка: AZJIO



Промежуточные решения
Оболочка для regjump
Без сторонних утилит
Без сторонних утилит (с запоминанием ввода путей)

С чего все начиналось
Я сделал простенькую оболочку для утилиты regjump, поскольку так и не смог найти корректно работающий аналог под 7.




Код: Выделить весь код
; Simple GUI wrapper for regjump http://technet.microsoft.com/en-us/sysinternals/bb963880
; regjump must reside in %path%
; Run the script elevated when UAC is on

#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)  ; Change to OnEvent mode 
$mainwindow = GUICreate("JumpReg", 400, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlCreateLabel ("Путь к разделу реестра:", 20, 10)
$path = GUICtrlCreateInput("", 20, 30, 360, 20)
$jumpbtn = GUICtrlCreateButton("Jump", 170, 60, 60) ;Registry path input field
GUICtrlSetOnEvent($jumpbtn, "OKButton")
GUISetState(@SW_SHOW)
$exe = "regjump.exe "

While 1
  Sleep(1000)  ; Idle around
WEnd

Func OKButton()
  $jump = $exe & GUICtrlRead($path)
  Run(@ComSpec & " /c " & $jump, "", @SW_HIDE)
 ;Run("regjump.exe" & " " & GUICtrlRead($path), "", @SW_SHOW) ;works, but shows cmd window

EndFunc

Func CLOSEClicked()
  Exit
EndFunc
На большее моих знаний AutoIt и программирования в целом не хватает Но все-таки хотелось бы сделать так, чтобы после ввода раздела реестра в поле активной становилась кнопка. Это позволит просто нажимать Enter, вместо TAB+Enter.

Подскажете, как это сделать?

Спасибо.

P.S. Скрипт нужно запускать с полными правами.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 19-12-2010

 

Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2328

Профиль | Отправить PM | Цитировать


Короче фиг знает. Даже в 32-битной XP и на этой сборке получается 851 кб.

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

Отправлено: 10:36, 29-05-2012 | #151



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


(*.*)


Сообщения: 36570
Благодарности: 6700

Профиль | Сайт | Отправить PM | Цитировать


Цитата AZJIO:
Кстати проверил разделитель "|" в реестре, он ислоьзуется, например в только в разделе »
А зачем нужен этот разделитель?

Цитата AZJIO:
Я вынес разделитель в переменную, чтоб его можно было поменять, попробовать табуляцию. »
Это что-то для гиков. Нужно быть проще

Цитата AZJIO:
Может сжатие не сработало »
Я считаю, что надо обходиться без сжатия UPX во избежание ложных срабатываний антивирусов.

Предлагаю допилить текущий вариант, обновить посты по первым трем ссылкам в шапке и скомпилировать. После чего я соберу набор для софт-портала и обновлю там утилиту.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 12:40, 29-05-2012 | #152


Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2328

Профиль | Отправить PM | Цитировать


Цитата Vadikan:
А зачем нужен этот разделитель? »
Для History в HKEY_CURRENT_USER\Software\JumpRegAzjio.

Отправлено: 13:03, 29-05-2012 | #153


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


AZJIO
1 При первом запуске (с пустой историей) и нажатии выпадающего списка, наблюдаю артефакт справа:


2 Ни в шапке темы, ни в Readme_Ru.txt не ни слова о том, что утилита хранит настройки в реестре.
3 Утилита не имеет инсталлятора и деинсталлятора. Возможно он ей и не нужен, но кто-то же должен очистить реестр после удаления утилиты или хотя бы предупредить об этом пользователя.
4 Выпадающий список имеет фиксированную ширину. Лучше сделать его ширину подстраивающейся под максимальную длину пути в этом выпадающем списке, ограничив ее максимальное значение разумной величиной. Тогда и п.1 исчезнет.

Отправлено: 13:35, 29-05-2012 | #154


Аватара для AZJIO

Старожил


Сообщения: 265
Благодарности: 126

Профиль | Отправить PM | Цитировать


Цитата Vadikan:
А зачем нужен этот разделитель? »
При вставке в комбо нативная функция GUICtrlCreateCombo использует разделитель данных, который не должен встречаться в самих строках иначе он будет расцениваться как разделитель, а не как текст. Даже если использовать функции из UDF, пример ниже
читать дальше »
Код: Выделить весь код
#include <GuiComboBox.au3>

Global $hCombo, $sText

$hGUI = GUICreate("(UDF) ComboBox Create", 450, 396)
$hCombo = GUICtrlCreateCombo("", 5, 4, 440, 296)
; $hCombo = GUICtrlGetHandle($iCombo)

$iDummy = GUICtrlCreateDummy()

Dim $AccelKeys[1][2] = [["{Enter}", $iDummy]]
GUISetAccelerators($AccelKeys)

GUISetState()

_GUICtrlComboBox_BeginUpdate($hCombo)
For $i = 1 To 10
    _GUICtrlComboBox_AddString($hCombo, $i & ' строка')
Next
_GUICtrlComboBox_EndUpdate($hCombo)

While 1
    Switch GUIGetMsg()
        Case $hCombo
            $iIndex = _GUICtrlComboBox_GetCurSel($hCombo)
            _GUICtrlComboBox_GetLBText($hCombo, $iIndex, $sText)
            _GUICtrlComboBox_DeleteString($hCombo, $iIndex)
            _GUICtrlComboBox_InsertString($hCombo, $sText, 0)
            _GUICtrlComboBox_SetCurSel($hCombo, 0)
        Case $iDummy
            $sText = _GUICtrlComboBox_GetEditText($hCombo)
            $iIndex = _GUICtrlComboBox_FindStringExact($hCombo, $sText)
            If $iIndex = -1 Then
                $iCount = _GUICtrlComboBox_GetCount($hCombo)
                If $iCount > 12 Then _GUICtrlComboBox_DeleteString($hCombo, $iCount - 1)
                _GUICtrlComboBox_InsertString($hCombo, $sText, 0)
            Else
                ; _GUICtrlComboBox_GetLBText($hCombo, $iIndex, $sText)
                _GUICtrlComboBox_DeleteString($hCombo, $iIndex)
                _GUICtrlComboBox_InsertString($hCombo, $sText, 0)
            EndIf
        Case -3
            Exit
    EndSwitch
WEnd

то всё равно желательно использовать какой либо символ разделителя (не из бинарных), чтобы записывать историю в реестр одной строкой. Вообщем пока нет желания изменять, так как случай маловероятный, 1 на 10000
Цитата:
Это что-то для гиков. Нужно быть проще
Нет, просто реестра допускает использование символа в названи раздела. Например в названии файлов запрещены символы ^/:*?"<>| значит я их могу использовать для разметки, делении строки на участки, символ можно удалить/заменить, при этом путь не пострадает. Просто редкий случай, а тестировать заново все функции нет желания, тем более в регулярных выражениях он используется закомментированным. То есть я уже сделал тестовый вариант и проверил, но как всегда утилитой нужно неделю пользоваться, чтоб быть уверенным.

Цитата:
Я считаю, что надо обходиться без сжатия UPX во избежание ложных срабатываний антивирусов.
Эту версию UPX вроде ни кто не ругал, отрицательных отзывов не было. На одном копьютере правда зонтик сработал при мне.

Цитата:
Предлагаю допилить текущий вариант, обновить посты по первым трем ссылкам в шапке и скомпилировать. После чего я соберу набор для софт-портала и обновлю там утилиту.
Что именно допилить? Если есть предложения по текстам или ещё что, меня на данном этапе устраивает. На счёт компиляции в принципе исходник содержит всё необходимое, но если что могу скомпилировать без UPX, а у себя я пока буду выкладывать пожатым. Единственное желательно компилировать используя AutoIt3Wrapper + Obfuscator, потому что я в предыдущих версиях выкладывал обфуцированный вариант, а теперь если не обфуцировать то размер exe-файла может заметно возрасти за счёт #include.
читать дальше »
#include <WindowsConstants.au3>
#include <ForJumpReg.au3>
#include <GUIConstantsEx.au3>
#include <File.au3>
#include <GuiComboBox.au3>
Обфускатор удалит неиспользуемые функции из UDF перед компиляцией их в файл.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:41, 29-05-2012 | #155


Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2328

Профиль | Отправить PM | Цитировать


Цитата gora:
2 Ни в шапке темы, ни в Readme_Ru.txt не ни слова о том, что утилита хранит настройки в реестре. »
Вы много видели программ, в справке которых это расписано?
А много видели людей (ну кроме себя), которым это интересно?
Мне перпендикулярно, где чего хранит программа. Уверен, что и 99% пользователей тоже.
Цитата gora:
3 Утилита не имеет инсталлятора и деинсталлятора. Возможно он ей и не нужен, но кто-то же должен очистить реестр после удаления утилиты или хотя бы предупредить об этом пользователя. »
Ничего чистить точно не надо. Предупредить?
Цитата Morpheus:
А много видели людей (ну кроме себя), которым это интересно?
Мне перпендикулярно, где чего хранит программа. Уверен, что и 99% пользователей тоже. »
Если уж так интересно, то можно код почитать или тему, если чтение кода недоступно.

Последний раз редактировалось Morpheus, 29-05-2012 в 13:58.


Отправлено: 13:49, 29-05-2012 | #156


Аватара для AZJIO

Старожил


Сообщения: 265
Благодарности: 126

Профиль | Отправить PM | Цитировать


gora,
Цитата gora:
2 Ни в шапке темы, ни в Readme_Ru.txt не ни слова о том, что утилита хранит настройки в реестре »
Ни одна программа не предупреждает, будет ли она писать что-то в реестр или копировать в "Application Data", хотя само меню "Экспорт настроек реестра" даёт понять, что настройки всё же в реестре. Да и утилита для людей которые поймут это, и стоит ли лишние слова писать в Readme.

Цитата:
1 При первом запуске (с пустой историей) и нажатии выпадающего списка, наблюдаю артефакт справа:
инициализатором ))) артефакта оказалась кнопка.
читать дальше »
Код: Выделить весь код
GUICreate('My Program', 250, 55)
$Jump = GUICtrlCreateButton(">", 233, 12, 22, 22)
$comboreg = GUICtrlCreateCombo("", 6, 5, 222)
GUISetState()
Do
Until GUIGetMsg() = -3
Если сделать кнопку после комбо, то артефакта нет.

3. Инсталятор наверно лишнее, можно reg-файл положить для очистки.
4. Я об этом думал, как можно вычислить ширину строки в комбо? Если примитивным методом, то проверять длинну каждой строки в комбо (все 20 или все 50) при каждом прыжке. будет ли это экономичным? Я хотел добавить ширину в настройки, но показалось это лишнее. Просто этот оптимальный минимум позволит сжать утилиту компактно по ширине, не потеряв при этом видимость строк раскрывающегося списка.

Отправлено: 14:33, 29-05-2012 | #157


(*.*)


Сообщения: 36570
Благодарности: 6700

Профиль | Сайт | Отправить PM | Цитировать


AZJIO,

С разделителем понятно.

Допилить - остановиться на каком-то наборе уже оттестированных новых функций и сделать релиз. Компиляцию я оставляю на ваше усмотрение, но все-таки лучше без UPX, размер утилиты не столь велик.

Когда будет готово, пинганите меня, я соберу набор для обновления на софт-портале.

P.S. Упоминание про хранение в реестре и деинсталлятор не нужны.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 16:28, 29-05-2012 | #158


Аватара для AZJIO

Старожил


Сообщения: 265
Благодарности: 126

Профиль | Отправить PM | Цитировать


Я ещё решил добавить поддержку горячей клавиши и ком-строки. Горячая клавиша позволит не активируя окна сделать прыжок, а ком-строка позволит выделив текст послать его назначенной в редакторе горячей клавишей послать прыжок в реестр. Последнее конечно с учётом что редактор это умеет, например Notepad++, SciTE.

Вобщем то горячая клавиша уже работает, осталось запись/чтение в реестре сделать. Но используется не HotKeySet, у него проблемы с русской раскладкой, использую GuiHotKey.au3 от rasim.

Последний раз редактировалось AZJIO, 29-05-2012 в 17:28.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:21, 29-05-2012 | #159


Аватара для AZJIO

Старожил


Сообщения: 265
Благодарности: 126

Профиль | Отправить PM | Цитировать


Готово JumpReg, но глубоко не тестил.
В Notepad++ в shortcuts.xml тестил с командой
Код: Выделить весь код
<Command name="JumpReg" Ctrl="yes" Alt="no" Shift="no" Key="112">"$(NPP_DIRECTORY)\..\AutoIt3.exe" "$(NPP_DIRECTORY)\..\JumpReg.au3" "$(CURRENT_WORD)"</Command>
Ctrl+F1 (удобные хоткеи заняты). Параметр обязательно в кавычках - "
кавычки не отображаются.. в общем &квот;

Перезалил, отключил попытку повторной регистрации той же горячей клавиши при применении настроек. Новые тексты перенёс в языковые файлы.

Хотел сделать копирование строки Send('^{INS}') при использовании горячей клавиши, но не пойму почему не работает, может потому что вызывается из процедуры WM_HOTKEY, которая сама обрабатывает текущий HOTKEY.

Перезалил добавив x64

Последний раз редактировалось AZJIO, 29-05-2012 в 23:38. Причина: Перезалил 2 раза

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:59, 29-05-2012 | #160



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Утилита для перехода в заданный раздел реестра

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - [решено] Почему параметры реестра импортируются в раздел WOW6432Node loveaboveall Microsoft Windows 7 17 17-01-2011 12:13
CMD/BAT - [решено] Смена прав на раздел реестра и его удаление primewar Скриптовые языки администрирования Windows 20 30-11-2010 22:17
Утилиты - [addon] ERUNT - утилита для бэкапа реестра. Boa Soft Наборы обновлений для Windows XP/2003/Windows 7 18 03-10-2010 18:24
Интерфейс - [решено] Ярлык для перехода в режимы сна в Vista x64 SP2 BBeard Microsoft Windows Vista 5 29-06-2009 11:42
[решено] Невозможно удалить раздел реестра alexandri Microsoft Windows 2000/XP 5 18-01-2007 09:09




 
Переход