1

Тема: AHK:RegRead значение по умолчанию

Доброго времени суток. Подскажите пожалуйста как выставить значение по умолчанию в "RegRead". Записать и прочитать параметры я смог а вот выставить по умолчанию никак. Только
если вручную значения в реестре прописать то работает.

+ открыть спойлер

Справку по"RegRead" не предлагать я там ничего не понял.

Пример.

OnExit, Exit

RegRead, xxxx, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, xdirectory
RegRead, yyyy, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, ydirectory


Gui, Add, Edit, r9
Gui, Show, x%xxxx% y%yyyy% , lang053
   return

GuiClose:
Exit:
IfWinExist, lang053
{
    WinGetPos, xxxx, yyyy 
   
}
RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, xdirectory, %xxxx%
     sleep, 60
RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, ydirectory, %yyyy%
         sleep, 60 
  Exitapp
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

2

Re: AHK:RegRead значение по умолчанию

Прочитать справку по "RegRead". Что непонятно - спросить.

3

Re: AHK:RegRead значение по умолчанию

Ну последний параметр в "RegRead" отвечает за значение по умолчанию, это в моём скрипте "xdirectory" и  "ydirectory" . Получается так , но так не работает.

xdirectory := 600
ydirectory := 600
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

4 (изменено: stealzy, 2017-05-05 01:35:44)

Re: AHK:RegRead значение по умолчанию

ValueName — Имя параметра, чьё значение нужно прочитать. Если опущен или пустой, будет считан параметр, который в редакторе реестра отображается под именем "(По умолчанию)". Если ему не присвоено никакого значения, выходная переменная будет пустой и ErrorLevel равен 1.

https://s8.hostingkartinok.com/uploads/images/2017/05/540b7cee13aee1c936e5f0fa67b56680.png

5

Re: AHK:RegRead значение по умолчанию

Так тоже  не выходит.

RegRead, xxxx, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, %xdirectory%
If xdirectory = 
 ErrorLevel = 0
    Return

RegRead, yyyy, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, %ydirectory%
 If ydirectory = 
ErrorLevel = 0
Return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

6 (изменено: stealzy, 2017-05-05 13:02:59)

Re: AHK:RegRead значение по умолчанию

Вы неправильно поняли термин "по умолчанию".
В случае с реестром это особое значение, которое принадлежит самому разделу реестра.
По аналогии с ФС информацию можно было бы записывать не только в файлы, но и в папки.

x:=42 ; запись и чтение параметра по умолчанию раздела HKEY_LOCAL_MACHINE\SOFTWARE\Scriptss
RegWrite REG_SZ, HKEY_LOCAL_MACHINE\SOFTWARE\Scriptss,, %x%
RegRead xOut, HKEY_LOCAL_MACHINE\SOFTWARE\Scriptss
MsgBox % xOut

Установку дефолтных значений, если в реестре ничего не найдено, кодируйте самостоятельно.

7 (изменено: Alectric, 2017-05-05 16:26:00)

Re: AHK:RegRead значение по умолчанию

OnExit, Exit

RegRead, xxxx, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, xdirectory
RegRead, yyyy, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, ydirectory

if (xxxx="")
{
  xxxx=555
  RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, xdirectory, %xxxx%
}
if (yyyy="")
{
  yyyy=111
  RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, ydirectory, %yyyy%
}

http://forum.script-coding.com/viewtopic.php?id=10783

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

8

Re: AHK:RegRead значение по умолчанию

Уважаемый Alectric , в моём скрипте не работает. Значение по умолчанию ставятся , при выходе записываются новые (чего и добивался) , но при старте скрипта меняются на значения по умолчанию. А нужно что бы первый раз когда запускаешь скрипт он стартовал со значениями по умолчанию , а все остальные значения брал с последнего местоположения окна. 

#NoEnv
#Persistent
#Singleinstance, force
SetWorkingDir, %A_ScriptDir%/res
SetBatchLines,-1
CoordMode,Mouse,Screen
CoordMode,tooltip,Screen
CoordMode,Caret,Screen
SetKeyDelay, -1, -1
SetWinDelay,20
OnExit, Exit
if (xxxx="")
{
  xxxx=555
  RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, xdirectory, %xxxx%
}
if (yyyy="")
{
  yyyy=111
  RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, ydirectory, %yyyy%
}


Gui, +AlwaysOnTop -Caption +ToolWindow +LastFound 
Gui, Add, Picture, x0 y0 w20 h16  vStatic1, Ru1.png  
 Gui, Add, Picture, x0 y0 w20 h16 vStatic2, En1.png   
Gui, Show, x%xxxx% y%yyyy% h16 w20 NA, lang053
;======================== Меню ===================================
RegRead, xxxx, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, xdirectory
RegRead, yyyy, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, ydirectory





hGui:=WinExist()

loop
{
   MouseGetPos,,,mwin
   oldlang:=lang
   lang:=InputLayout()
   if (oldlang!=lang)
   If (lang = "Russian")
   {
    Menu, Tray, Icon, Ru.ico, 1, 1
GuiControl, hide, static2
    GuiControl, Show, static1 

   }
   Else If (lang = "English")
   {
    Menu, Tray, Icon, En.ico, 1, 1
GuiControl, hide, static1
      GuiControl, Show, static2

   }
   Gui, +AlwaysOnTop -Caption +ToolWindow +LastFound
   sleep, 50
}


#if (mwin=hGui)
lbutton::

MoveWin(hGui)

return
#if

MoveWin(hwnd,key="lbutton")
{
  MouseGetPos,oldmmx,oldmmy
  while GetKeyState(key,"P")
  {
    sleep,10
    MouseGetPos,mmx,mmy
    WinGetPos,wx,wy,ww,wh,ahk_id %hwnd%
    wx:=wx+mmx-oldmmx
    wy:=wy+mmy-oldmmy
    WinMove,ahk_id %hwnd%,,%wx%,%wy%
   
    oldmmx:=mmx
    oldmmy:=mmy

  }

   
  return
}

InputLayout()
{
    WinGetClass, Class, % "ahk_id" hID := WinExist("A")
    if !id := DllCall("GetWindow", Ptr, hid, UInt, GW_OWNER := 4, Ptr)
      id:=hID
    ThreadID := DllCall("GetWindowThreadProcessId", "Int", id, "Int", 0)
    HKL := DllCall("GetKeyboardLayout", "uint", ThreadID, "UShort")
    VarSetCapacity(sKbd, 260, 0)
    DllCall("GetLocaleInfo", "uint", HKL
                           , "uint", 0x1001
                           , "str",  sKbd
                           , "uint", 260)
    Return sKbd
}

Exit:
IfWinExist, lang053
{
    WinGetPos, xxxx, yyyy 
   
}
RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, xdirectory, %xxxx%
     sleep, 60
RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, ydirectory, %yyyy%
         sleep, 60 
  Exitapp
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

9

Re: AHK:RegRead значение по умолчанию

https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQtAKH3aQQ3eVD8SFIO7EYfo2H84lhsBmIV7UoHAF8rEywui0mH

10

Re: AHK:RegRead значение по умолчанию

Соблюдай последовательность действий, а не просто раскидывай куски кода в редакторе.

#NoEnv
#Persistent
#Singleinstance, force
SetWorkingDir, %A_ScriptDir%/res
SetBatchLines,-1
CoordMode,Mouse,Screen
CoordMode,tooltip,Screen
CoordMode,Caret,Screen
SetKeyDelay, -1, -1
SetWinDelay,20
OnExit, Exit

;======================== Меню ===================================
RegRead, xxxx, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, xdirectory
RegRead, yyyy, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, ydirectory




if (xxxx="")
{
  xxxx=555
  RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, xdirectory, %xxxx%
}
if (yyyy="")
{
  yyyy=111
  RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Scriptss, ydirectory, %yyyy%
}

Gui, +AlwaysOnTop -Caption +ToolWindow +LastFound
Gui, Add, Picture, x0 y0 w20 h16  vStatic1, Ru1.png
 Gui, Add, Picture, x0 y0 w20 h16 vStatic2, En1.png
Gui, Show, x%xxxx% y%yyyy% h16 w20 NA, lang053




hGui:=WinExist()
...

...

...
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

11

Re: AHK:RegRead значение по умолчанию

Спасибо большое Alectric за разъяснения , всё работает.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).