Показать полную графическую версию : [решено] Утилита для перехода в заданный раздел реестра
Страниц :
1
2
3
4
5
[
6]
7
8
9
AZJIO
SyDr, интересно, если права не будут получены, то фактически будет перезапуск в цикле. »
Если права не получены, функция ShellExecute устанвливает значение флага @error не равным 0.
ИМХО, тут идеально такое поведение:
Вывести запрос UAC
Если разрешение получено - продолжить работу, как обычно.
Если не получено - продолжить работу и вывести запрос с предложением отключить автоматический запрос на повышение прав.
Только тут проблема с бесконечным перезапуском, если запускать с ограниченными правами и отключённым UAC. То есть надо проверять ещё и включён/отключён ли UAC.
Morpheus, даже не знаю. Будем продолжать мучаться? Можно попробывать активировать окно (оно ведь активно после запуска? В панели задач.), затем установить атрибут поверх всех окон, и через минмальный промежуток времени снять.
GUISetState()
GUISetState(@SW_RESTORE)
Sleep(300)
WinSetOnTop($GUI, '', 1)
Sleep(300)
WinSetOnTop($GUI, '', 0)
Sleep(300)
Как ведёт себя окно?
Morpheus
11-01-2011, 13:00
AZJIO, права выдаются, но прятки продолжаются.
Можно попробывать активировать окно (оно ведь активно после запуска? В панели задач.), затем установить атрибут поверх всех окон, и через минмальный промежуток времени снять. »
Была идея это предложить. Сейчас опробую.
AZJIO, спасибо. Протестировал язык и последние изменения в структуре - все работает!
Я поправил языковой файл, добавив в него коммент в начале (пост обновлен). Я также поправил в коде
$LngAdF='Import Favorites to Regedit Ctrl+Up'
(пост обновлен). Это мой косяк в переводе :)
В общем, все готово к релизу, только мне непонятно, мешает ли ему эта дискуссия с окном в фоне, тянущаяся последние несколько дней :)
Morpheus
11-01-2011, 13:25
SyDr, аха, скрывается при старте (когда глюк проявляется) и тут же появляется.
Думаю, такое решение можно считать приемлемым. Спасибо!
P.S. Пробовал в связке с #RequireAdmin.
Morpheus, ещё не всё :)
По идее, чтобы было правильно, надо удалить вот эту часть:
$TrTop=RegRead('HKCU\Software\JumpRegAzjio', 'Topmost')
If Not @error And $TrTop=1 Then
WinSetOnTop($GUI, '', 1)
GUICtrlSetState($Topmost, 1)
EndIf
И всё в том же месте, где и всегда:
GUISetState()
GUISetState(@SW_RESTORE)
WinSetOnTop($GUI, '', 1)
$TrTop=RegRead('HKCU\Software\JumpRegAzjio', 'Topmost')
If Not @error And $TrTop=0 Then
WinSetOnTop($GUI, '', 0)
GUICtrlSetState($Topmost, 0)
EndIf
При этом окно будет поверх всех окон, если в реестре не указано противоположное.
Сделайте без всяких WinSetOnTop(), просто
$TrTop = RegRead($HKCU & '\Software\JumpRegAzjio', 'Topmost')
$GUI = GUICreate($LngTitle, 548, 84, $aPos[1], $aPos[2], 0x00040000 + 0x00020000 + 0x00010000, 8 * $TrTop) ; WS_EX_TOPMOST = 0x00000008
SyDr, вобщем чтоб не заморачиваться, оставить как было, ведь WinSetOnTop работает через реестр и автовключать его не всем понравится. А через реестр есть выбор, у кого проблема, включит и забудет.
Vadikan, да, пора отсечку.
Morpheus
11-01-2011, 16:02
Думаю, правильно будет активировать на короткое время при запуске, а "поверх всех окон" - выбор оставить.
Код будет такой?
GUICtrlSetState($comboreg, 256)
GUISetState()
GUISetState(@SW_RESTORE)
Sleep(200)
WinSetOnTop($GUI, '', 1)
WinSetOnTop($GUI, '', 0)
$TrTop=RegRead('HKCU\Software\JumpRegAzjio', 'Topmost')
If Not @error And $TrTop=1 Then
WinSetOnTop($GUI, '', 1)
GUICtrlSetState($Topmost, 1)
EndIf
UPD: Немного подкорректировал первоначальный вариант и потестил. Пока проблем нет.
Morpheus, ок, обновил посты, ссылки
ок, обновил посты, ссылки »
да, пора отсечку »
Ок, code freeze! :) Скрипты и EN.ini для версии 0.6 прикреплены в шапке.
AZJIO, скомпилируйте, пожалуйста, х86 и х64 версии и залейте к себе. Если хотите, можете сразу сформировать ZIP архивы со всем необходимым. Пожалуй, русский языковой файл для regscanner не стоит включать, иначе придется делать отдельные архивы для языковых версий... А вот readme от regscanner - обязательно, короче все, что идет в его комплекте (требования лицензии nirsoft).
Smarty сделал значок 48х48 (включает меньшие размеры). На мой взгляд, он посимпатичнее (см. шапку), хотя и потяжелее. Можете использовать его, если нравится (прикреплен).
Я потом перекину на софт-портал, сделаю описание там на двух языках и пропиарим немного :)
Morpheus
12-01-2011, 01:19
Smarty сделал значок 48х48 (включает меньшие размеры). На мой взгляд, он посимпатичнее (см. шапку), хотя и потяжелее. Можете использовать его, если нравится (прикреплен). »
Меня глючит? Что-то не наблюдаю.
Morpheus
12-01-2011, 01:29
Vadikan, теперь верю :)
Vadikan, выкладываю zip, проверте х64, а то я не могу проверить и терзают сомнения. Иконку всё же свою вставил, добавил 24, 32, 48, констраст по ярче, резкость поболее и цвет бирюзовый больше нравится.
AZJIO, спасибо! х64 я снова попросил глянуть Morpheus. Если все ок, на выходных все сделаю. Архив из поста можете удалить, чтобы не тратить место. Я уже перекинул на ФТП.
С вашего позволения я для англоязычных пользователей внесу некоторые изменения в пакет (ридми и т.п.).
Vadikan, добавил "regedit -m" по вашему совету и исправил размеры окна и координаты кнопки для Win7. Не понимаю, почему при точном указании (5) кнопка в Win7 на 1 пиксел ниже, а в WinXP нормально...
При нескольких окнах regedit команда передаётся на последнее активное окно.
Исходник с выбором утилит придётся оставить, с перезапуском regedit такой фокус не получается.
AZJIO, спасибо! Понятно, что невозможно совместить перезапуск и открытие второго экземпляра regedit :)
Сейчас посмотрим, как она пойдет в массы, выявятся ли баги и какие хотелки объявятся. Потом выпустим обновление.
AZJIO
1 Скачал х64 версию, запустил - интерфейс русский. Сменил язык на английский, посмотрел, а вот назад на русский язык поменять не удалось - нет русского языкового файла. Пришлось лезть в реестр (благо есть исходники) и удалять ключ языка.
2 Не увидел ни в шапке, ни в readme описание отличий версий х86\х64. В исходниках видел переключение по @OSArch или я что-то не понял?
3 Утилита RegScanner с английским интерфейсом хотя на оф. сайте есть русский языковой файл (всего 4кБ). Может стоит его добавить в Вашу утилиту и переключать язык синхронно (JumpReg и RegScanner)?
4 Стоит ли утилите хранить свои настройки и прочее в реестре, может будет достаточно ini файла, дабы не засорять реестр?
Тестировал на Win7 x64.
gora
1. здесь (http://azjio.ucoz.ru/load/vsjo_dlja_autoit3/skompilirovannye_skripty/jumpreg/4-1-0-36) есть русский языковой файл (и немецкий). Можно не лезть в реестр, а удалить англ. файл и в реестре сбросится при отсутствии файла.
2. Разницы никакой, только в поддержке системы.
3. Опять же пункт 1, там всё есть.
4. Реестр создан, чтоб его засорять. Он в памяти, и скорость работы с ним быстрее чем с ini.
AZJIO
1 Почему же в шапке старая версия!?
2 Будут запускаться разные regedit.exe (x86\x64) и\или я не смогу добраться до х64 разделов реестра, если буду использовать JumpReg x86 на х64 системе? По Вашей ссылке только один вариант лежил.
3 При смене языка в JumpReg в RegScanner всегда русский, а я писал про синхронное переключение.
4 Позиция понятна, хотя я не уверен, что она верная. :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC