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

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

 

Аватара для SyDr

Старожил


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

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


AZJIO, была похожая ситуация. После закрытия дочернего окна, окно-родитель прячется за всеми остальными окнами. Сначала решал проблему в лоб, а потом нашёл решение "покрасивее":
Попробуйте после строки
Код: Выделить весь код
GUISetState()
добавить строку
Код: Выделить весь код
GUISetState(@SW_RESTORE)
или строки
Код: Выделить весь код
Sleep(1)
GUISetState(@SW_RESTORE)
Если первый вариант не сработает

-------

"Что мы думаем, знаем или во что верим в конце концов не так уж и важно.
Важно лишь то, что мы делаем."
Джон Раскин


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



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

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


Аватара для Morpheus

Ветеран


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

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


Цитата SyDr:
добавить строку »
Цитата SyDr:
или строки »
Увы, прячется.

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


Аватара для SyDr

Старожил


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

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


Хм... Тогда можно попробывать решить проблему "в лоб". Там же:
Код: Выделить весь код
WinActivate($GUI)
Или, опять таки:
Код: Выделить весь код
Sleep(1)
WinActivate($GUI)

-------

"Что мы думаем, знаем или во что верим в конце концов не так уж и важно.
Важно лишь то, что мы делаем."
Джон Раскин


Отправлено: 15:11, 10-01-2011 | #93


(*.*)


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

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


AZJIO, я тут подумал, что для релиза утилиты было бы удобнее не включать необходимые файлы и распаковывать их при первом запуске, а просто разместить их в папках параллельно утилите. Например,
\Regscanner - все файлы regscanner
\Lang - образец языкового файла (англ.)
\Source - исходники

Тогда в корневой папке останутся только утилита и ее файлы - избранное и история. Поаккуратнее будет. А в коде фактически нужно будет только поправить вызов regscanner и убрать включение доп. файлов.

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


Отправлено: 23:04, 10-01-2011 | #94


Аватара для Morpheus

Ветеран


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

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


Цитата Vadikan:
Но как-то неправильно делать совместимую с 7 утилиту за счет режима совместимости »
Ага, согласен. Но лучше пусть едет с такими шашечками, чем не едет совсем
SyDr, что в лоб, что полбу, всё едино. 4 раза за 5 минут.

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


Аватара для AZJIO

Старожил


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

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


Vadikan, ссылку обновил, посты поправил. Языковой файл поправил, удалив у параметров начальные Lng, чтобы исключить подмены существующих переменных в скрипте путём вставки в ini одноимённых параметров.

Morpheus, оказалось директивы #RequireAdmin и т.д. нельзя вставлять внутрь условий. Поэтому невозможно добавить пункт в меню, который бы возможно было отключить (с перезапуском).
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:44, 11-01-2011 | #96


Аватара для Morpheus

Ветеран


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

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


AZJIO, в любом случае спасибо! Для себя решение теперь знаю.

Отправлено: 03:59, 11-01-2011 | #97


Аватара для SyDr

Старожил


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

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


AZJIO
http://autoit-script.ru/index.php/topic,2446.0.html

Код: Выделить весь код
If Not IsAdmin() Then
    ShellExecute(@AutoItExe, $CMDLineRaw, @WorkingDir, "runas", @SW_SHOWNORMAL)
    Exit
EndIf
Собственно, скрипт с этими тремя строчками повторяет в своём поведении скрипт с #RequireAdmin, однако может быть легко модифицирован


Morpheus, там же , 9 часов назад:
Цитата:
JD Turner
I believe I have found the cause of this problem and possibly a cure.

I dual boot XP, Vista and Win7 and experienced this problem on all these versions of Windows. As a programmer, I decided to try to figure out what was going on and discovered that WM_KeyDown and WM_KeyUp messages were being sent (with scan code 0xFF) to the focused window/control, roughly once per second.

I considered the possibility of a bootsector-level virus and decided to swap out the disk so I needed to find out if I had SATA or a PATA drive. To do this safely, I had to disconnect the power and the battery (Dell laptop). When I reconnected the hard disk and started it up again it was fixed. (I later checked the bootsector - that was ok.)

My system was plagued by this problem for months but now it is fine. I am certain it is fine since all symptoms are now cured and the program I used to test the problem also definitively tells my system is ok. I am not absolutely certain that it was completely powering down the system that cured the problem but I definitely recommend you try it. If you have a desktop computer, consider swapping the keyboard - I figure that's where the problem was rooted.

Hope this helps.

-------

"Что мы думаем, знаем или во что верим в конце концов не так уж и важно.
Важно лишь то, что мы делаем."
Джон Раскин


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


Аватара для Morpheus

Ветеран


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

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


SyDr, дело в том, что 64-ка у меня на VirtualBox.
Пробовал ещё это, но нифига.

Отправлено: 12:14, 11-01-2011 | #99


Аватара для AZJIO

Старожил


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

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


SyDr, интересно, если права не будут получены, то фактически будет перезапуск в цикле. Нужно ещё предусмотреть подсчёт количества запусков через реестр за промежуток времени. Чтоб дать возможность отключить перезапуск более 3 раз. Или вставить в условие "Диалог с возможностью не перезапускать".

Morpheus
, проверь этот код вместо #RequireAdmin
Код: Выделить весь код
If Not IsAdmin() Then
    MsgBox(0, 'Message', 'Нет прав, перезапускаем... с правами')
    ShellExecute(@AutoItExe, $CMDLineRaw, @WorkingDir, "runas", @SW_SHOWNORMAL)
    Exit
EndIf
Если будет получены права, то используем его. И может сворачивание пропадёт?

Отправлено: 12:17, 11-01-2011 | #100



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




 
Переход