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

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

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

(*.*)


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


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

Профиль | Сайт | Отправить 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

 

Новый участник


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

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


До ввода раздела реестра кнопка неактивна?

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



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

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


(*.*)


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

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


LexaSF, сначала фокус на поле ведь - туда вводится путь.

В принципе, мне все равно, будет переводиться фокус или нет. Главное - выполнение команды при нажатии Enter.

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


Отправлено: 16:21, 19-12-2010 | #3


Аватара для madmasles

Ветеран


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

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


Vadikan,
Может так?
Код: Выделить весь код
HotKeySet('{ENTER}', 'OKButton')
Только, наверное, надо еще проверку сделать на существование введенного раздела.

Еще здесь посмотрите: Открытие редактора реестра в заданной ветке. По-моему, не хуже, чем у M.Russinovich.

Последний раз редактировалось madmasles, 19-12-2010 в 16:53.


Отправлено: 16:23, 19-12-2010 | #4


(*.*)


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

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


madmasles, так если у меня другие окна открыты и в них нажимаю Enter, хоткей перехватывается и скрипт отрабатывает. Как ограничить его действие только активным окном скрипта?

Проверка необязательна, в принципе... regjump пойдет по пути вплоть до последнего существующего подраздела.

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


Отправлено: 16:53, 19-12-2010 | #5


Аватара для madmasles

Ветеран


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

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


Цитата Vadikan:
Как ограничить его действие только активным окном скрипта? »
Посмотрите здесь: HotKey - Установка горячих клавиш.

Отправлено: 16:57, 19-12-2010 | #6


(*.*)


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

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


madmasles, а собственными средствами AutoIt нельзя это сделать? Потому что регистрироваться на форуме, качать какие-то файлы, разбираться в навороченных функциях... время нужно А программка-то совсем простая.

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


Отправлено: 17:05, 19-12-2010 | #7


Аватара для madmasles

Ветеран


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

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


Vadikan,
Проверил у себя, правда на Windows XP, из 10 раз - 10 правильных срабатываний при куче открытых окон:
Код: Выделить весь код
;...
HotKeySet('{ENTER}', 'OKButton')
;...
Func OKButton()
    $jump = $exe & GUICtrlRead($path)
    MsgBox(0, '', $jump)
    ;Run(@ComSpec & " /c " & $jump, "", @SW_HIDE)
EndFunc   ;==>OKButton

Отправлено: 17:18, 19-12-2010 | #8


(*.*)


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

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


madmasles, а куда конкретно вы помещаете
Код: Выделить весь код
HotKeySet('{ENTER}', 'OKButton')
Если непосредственно над Func OKButton() или внутри, нажатие Enter ничего не дает. А если над while, то работает так, как я описал выше - перехват всех нажатий.

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


Отправлено: 17:40, 19-12-2010 | #9


Аватара для madmasles

Ветеран


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

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


Vadikan,
В Windows XP так у меня работает:
Код: Выделить весь код
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$exe = "regjump.exe "

HotKeySet('{ENTER}', 'OKButton')

$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)
GUICtrlSetOnEvent($jumpbtn, "OKButton")
GUISetState(@SW_SHOW)

While 1
    Sleep(20)
WEnd

Func CLOSEClicked()
    Exit
EndFunc   ;==>CLOSEClicked

Func OKButton()
    $jump = $exe & GUICtrlRead($path)
    MsgBox(0, '', $jump)
    ;Run(@ComSpec & " /c " & $jump, "", @SW_HIDE)
EndFunc   ;==>OKButton
Цитата Vadikan:
то работает так, как я описал выше - перехват всех нажатий. »
Может быть так в 7?

Последний раз редактировалось madmasles, 19-12-2010 в 18:09.


Отправлено: 17:53, 19-12-2010 | #10



Компьютерный форум 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




 
Переход