1 (изменено: Logonius, 2022-07-17 12:55:05)

Тема: AHK: Не работает RegRead

Привет.
Не пойму, почему не работает код.


Gui -MinimizeBox -MaximizeBox
Gui Font, s9, Segoe UI
Gui Add, Button, gOk x8 y56 w80 h23, &OK

Gui Show, w102 h93, Window
Return

Ok:
RegRead, CheckBrowser1, HKEY_CURRENT_USER, SOFTWARE\test, CheckBrowser
If CheckBrowser1 = 1
RegWrite, REG_SZ, HKEY_CURRENT_USER, SOFTWARE\test, CheckBrowser, 2
Else
RegWrite, REG_SZ, HKEY_CURRENT_USER, SOFTWARE\test, CheckBrowser, 1
return

Цель была чтоб если 1, то должен был сделать выход скрипта, если не 1 или вообще записи такой нет, то сделать потом действие, то есть, переход Goto.
Выше тестовый пример который я мучаю и который не хочет работать и переключать банально если 1, то на 2 и на оборот.

2

Re: AHK: Не работает RegRead

У меня этот код работает, сначала записывает 1, потом 2. Но синтаксис, который вы используете, устаревший. Читайте справку по этим командам.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Не работает RegRead

teadrinker
Не очень разбираюсь пока, недавно начал познавать, читал русскую справку script-coding и все брал оттуда, примеры и прочее.
Если можно подтолкнуть как будет правильно и почему у меня не работает, а у вас работает.

4 (изменено: Logonius, 2022-05-19 14:31:00)

Re: AHK: Не работает RegRead

Разобрался, на англ справку почитал), спасибо за ответ.

5

Re: AHK: Не работает RegRead

Logonius пишет:

читал русскую справку script-coding

Лучше читать первоисточник, переводы на нашем сайте были сделаны уже давно, никто не занимается их обновлением.
RegRead, RegWrite
Текущий синтаксис:

RegRead, CheckBrowser1, HKEY_CURRENT_USER\SOFTWARE\test, CheckBrowser
If CheckBrowser1 = 1
RegWrite, REG_SZ, HKEY_CURRENT_USER\SOFTWARE\test, CheckBrowser, 2
Else
RegWrite, REG_SZ, HKEY_CURRENT_USER\SOFTWARE\test, CheckBrowser, 1

Но и старый синтаксис до сих пор поддерживается, так что в этом не должно быть проблемы.

Logonius пишет:

почему у меня не работает, а у вас работает

Может, просто плохо проверили? Откройте regedit, запустите свой код, после нажатия на кнопку обновляйте страницу в regedit по F5.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6 (изменено: Logonius, 2022-05-19 14:40:40)

Re: AHK: Не работает RegRead

teadrinker

А подскажите еще, пожалуйста, проверить можно только параметр в реестре?, просто раздел проверить, нет такого в AHK?

7

Re: AHK: Не работает RegRead

Поясните, какую именно информацию вы хотите получить.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8 (изменено: Logonius, 2022-05-19 14:48:15)

Re: AHK: Не работает RegRead

Просто, любой раздел в реестре. Мой скрипт создает раздел, и я бы хотел проверить его, как говорил в первом сообщении, я могу конечно параметр создать, проверить, не сложно, просто подумал если параметр умеет, то и раздел должен по идее уметь проверить).

9

Re: AHK: Не работает RegRead

Logonius пишет:

я бы хотел проверить его

А что именно проверить-то? Существует ли он? Никогда не приходилось, по-моему прямого способа нет. Можно проверить в цикле Loop, Reg существование раздела в родительском разделе:

found := false
Loop, Reg, HKEY_CURRENT_USER\Software, K
{
   if (A_LoopRegName = "test") {
      found := true
      break
   }
}
MsgBox, % "Ключ HKEY_CURRENT_USER\Software\test " . (found ? "существует" : "не существует")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Не работает RegRead

Отлично, спасибо, то что нужно.

11

Re: AHK: Не работает RegRead

teadrinker пишет:

А что именно проверить-то? Существует ли он? Никогда не приходилось, по-моему прямого способа нет. Можно проверить в цикле Loop, Reg существование раздела в родительском разделе:

found := false
Loop, Reg, HKEY_CURRENT_USER\Software, K
{
   if (A_LoopRegName = "test") {
      found := true
      break
   }
}
MsgBox, % "Ключ HKEY_CURRENT_USER\Software\test " . (found ? "существует" : "не существует")

Добрый день, подскажите, как в ваш код засунуть несколько разделов?
Мне нужно проверить 3 раздела.

12

Re: AHK: Не работает RegRead

Вместо found заведите для каждого раздела отдельную переменную и уберите break.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13 (изменено: Logonius, 2022-07-17 18:39:38)

Re: AHK: Не работает RegRead

Что-то сложно), можно пример, пожалуйста.


Reg1 := "HKEY_CLASSES_ROOT\*\shell"
Reg2 := "HKEY_CLASSES_ROOT\Folder\shell"
Reg3 := "HKEY_CLASSES_ROOT\DesktopBackground\Shell"
loop, reg, %Reg1%, k
{
    if (A_LoopRegName = "") 
    {
      Reg1 := true
      ;Reg2 := true
      ;Reg3 := true
    }
    MsgBox, % (Reg1 ? "существует" : "не существует")
    return
}

Что, куда?), куда имя разделов вписать для поиска?

14

Re: AHK: Не работает RegRead

Не, ну соображалку, конечно, придётся включить немного.

Logonius пишет:
if (A_LoopRegName = "")

Это что должно означать? Возьмите за образец предыдущий код.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Не работает RegRead

Имя поиска раздела вписать и прочее я понял, я не могу понять как начать искать 3 и более параметра в одном куске кода, или мне придется просто копировать кусок поиска loop и просто подставлять переменную следующего параметра в реестре и т.д.?

Но тогда это будет раздельный поиск, а мне надо чтоб было чекнуты сразу все разделы и если там пусто во всех трех то вывести сообщение, а если из трех в одном есть что-то, удалить и вывести сообщение и т.д. разные варианты могут быть.

16

Re: AHK: Не работает RegRead

Все разобрался, поспал и голова заработала