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

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

 

(*.*)


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

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


Вложения
Тип файла: txt JumPreg_EN.au3.txt
(15.2 Kb, 6 просмотров)

AZJIO, я прикрепил перевод с исправлениями (сорри, но там интерфейс по состоянию на конец прошлого года )

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


Отправлено: 02:29, 06-01-2011 | #71



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

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


Аватара для Morpheus

Ветеран


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

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


AZJIO, спасибо, "поверх всех окон" очень удобная функция.
После переустановки x86, программа перестала запускаться в фоне даже на старом коде. А вот на чистой x64 - по-прежнему в фоне, спасает только "поверх всех окон". Если это можно как-нибудь полечить, было бы хорошо, а если нет, "поверх всех окон" будет достаточно.

Отправлено: 20:38, 06-01-2011 | #72


Аватара для AZJIO

Старожил


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

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


Morpheus, нужно запустить исходник и наверно должна какая то ошибка вылетать в сообщении перед вылетом утилиты.
Я вчера справку переводил и там такой текст:
Цитата:
При работе на 64-битных Windows, если вы хотите получить значение в 64-битной среде, вы должны иметь суффикс HK ... с 64, т.е. HKLM64.
Если бы вылетала в 64-битной, то есть направление что исправить. А для x86 получается всё наоборот.

И ещё: в той системе, где вылетает раздел реестра, куда программа сохраняет корректный?

На всякий случай тестовая версия с HKCU64. Если заработает, то обновлю посты и ссылку на EXE.
добавил код проверки разрядности OS и соответственно правильный корневой раздел реестра.
Код: Выделить весь код
Switch @OSArch
    Case 'X64'
        $HKCU='HKCU64'
        $HKCR='HKCR64'
    Case Else;'X86'
        $HKCU='HKCU'
        $HKCR='HKCR'
EndSwitch
Скомпилировал теперь на версии AutoIt3 v3.3.6.1, так как @OSArch на 3.2.12.1 не поддерживается.

Отправлено: 04:54, 07-01-2011 | #73


Аватара для Morpheus

Ветеран


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

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


AZJIO, утилита не вылетает, в том и проблема Просто окно при запуске утилиты скрывается за другими открытыми.

UPD: Гоняю полдня на 64-ке, запускается как хочет. Т.е. может и под окнами, а может и поверх. Ничего уже не понимаю, зависимости абсолютно никакой...
Видимо, какие-то приколы 7-ки.
AZJIO, в утилите нельзя указать положение относительно других окон при старте?

Последний раз редактировалось Morpheus, 07-01-2011 в 23:56.


Отправлено: 14:10, 07-01-2011 | #74


Аватара для AZJIO

Старожил


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

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


Morpheus, Попробуйте после строки GUISetState() (строка 210 в текущей) добавить строку
If Not WinActive($GUI) Then WinActivate($GUI)
Смысл команды: Если окно утилиты неактивно, тогда сделать его активным.

Отправлено: 09:11, 08-01-2011 | #75


Аватара для Morpheus

Ветеран


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

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


AZJIO, к сожалению, ничего не поменялось. Забить?

Кино

Последний раз редактировалось Morpheus, 09-01-2011 в 00:55.


Отправлено: 16:42, 08-01-2011 | #76


(*.*)


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

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


AZJIO, а как определяется язык программы? У меня английская ос с русским пакетом, и текущий язык интерфейса - русский. Мне-то все равно, конечно, и так даже больше нравится Но логичнее выводить русский интерфейс, а не английский. Т.е. определять по текущему языку пользователя, если это возможно, конечно.

У меня появилась идея добавить в меню Regedit запуск RegScanner. Тогда оно должно принять такой вид:
Цитата:
Add path to Favorites
Clear Favorites
--
Search with RegScanner
Выделил нбх изменения в интерфейсе.

Topmost -> Always on top
Удобно, кстати, спасибо!

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


Отправлено: 00:04, 09-01-2011 | #77


Аватара для AZJIO

Старожил


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

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


Вложения
Тип файла: 7z JumpReg-arxiv.7z
(14.4 Kb, 4 просмотров)

Цитата Vadikan:
У меня английская ос с русским пакетом, и текущий язык интерфейса - русский. »
тогда нужен твик, по которому нужно определить установленный русский язык.
У меня раньше был вариант получить язык из ветки "HKCU\Keyboard Layout\Preload", первый параметр, но на многих рускоязычных сборках умолчальный английский. Тогда я сделал цикл проверки наличия русского языка в раскладках.
Код: Выделить весь код
For $i = 1 to 5
    $LngN = RegEnumVal("HKCU\Keyboard Layout\Preload", $i)
    If @error Then ExitLoop
    If RegRead("HKCU\Keyboard Layout\Preload", $LngN) = 00000419 Then
        ; здесь языковые переменные
        $LngTitle='Моя программа'
        ExitLoop
    EndIf
Next
Принцип тот же, но у кого то может оказаться русский язык для изучения или теста, опять же сработает не по назначению.
Поэтому текущий вариант:
Код: Выделить весь код
If @OSLang = 0419 Then
    ; здесь языковые переменные
    $LngTitle='Моя программа'
EndIf
к этому варианту необходимо добавить проверку MUI. На всякий случай в прикреплённый файл добавил ещё два варианта проверки локализации, проверте при выставленном англ. языке по умолчанию, возврат "Ru".

Остальное учёл, ссылки обновлены, посты поправлены.

Цитата Morpheus:
к сожалению, ничего не поменялось. »
выложил промежуточные версии, чтоб отдетектить в какой момент появился этот глюк.

Последний раз редактировалось AZJIO, 09-01-2011 в 08:30.


Отправлено: 06:12, 09-01-2011 | #78


(*.*)


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

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


AZJIO, я пока не проверял другие варианты, но для программных методов есть функция GetUserDefaultUILanguage Function (Windows). Пример скрипта http://www.autoitscript.com/forum/to...-os-installed/

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


Отправлено: 12:15, 09-01-2011 | #79


Аватара для AZJIO

Старожил


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

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


Vadikan, в архиве положил функции отсюда:
http://www.autoitscript.com/forum/to...ost__p__763922
от ProgAndy (GetUserDefaultLocaleName) и KaFu (GetUserDefaultLangID), в готовом виде выдающие результат...

Последний раз редактировалось AZJIO, 09-01-2011 в 12:58.


Отправлено: 12:32, 09-01-2011 | #80



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




 
Переход