Sign in to follow this  
Followers 0
Shyke

Read from Ini for varible?

36 posts in this topic

Here is my code:

$User = IniRead($Ini, "Configuration", "UserName", "NotFound")

How can I get it so that $User is set to the key that is to be read from $Ini from the section "Configuration" and the name "UserName"?

Share this post


Link to post
Share on other sites



user.ini

[Configuration]
UserName=Dave

the script

$Ini = "User.ini"
$User = IniRead($Ini, "Configuration", "UserName", "NotFound")

$User = "Dave"

does that help???

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

or maybe this.... where your $User="UserName" ( from your post )

$var = IniReadSection("User.ini", "Configuration")
If @error Then 
    MsgBox(4096, "", "Error occured, probably no INI file.")
Else
    For $i = 1 To $var[0][0]
        MsgBox(4096, "", "Key: " & $var[$i][0] & @CRLF & "Value: " & $var[$i][1])
    Next
EndIf

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

Maybe I should give you more code:

$LoginL = GUICtrlCreateGroup("Login", 10, 10, 220, 105)

$UsernameL = GUICtrlCreateLabel("Username:", 20, 25, 50, 20)

$Username = GUICtrlCreateInput("Username", 80, 25, 140, 20)

$PasswordL = GUICtrlCreateLabel("Password:", 20, 45, 50, 20)

$Password = GUICtrlCreateInput("Password", 80, 45, 140, 20, $ES_PASSWORD)

$CharacterL = GUICtrlCreateLabel("Character:", 20, 65, 120, 20)

$Character = GUICtrlCreateInput("1", 150, 65, 70, 20)

$Login = GUICtrlCreateButton("Login", 90, 85, 60, 20)

DirRemove($Path & "WDB", 1)

GUISetState()

While 1

$msg = GUIGetMsg()

Select

; Login

Case $msg = $Login

$User = IniRead($Ini, "Configuration", "UserName", "NotFound")

$Pass = IniRead($Ini, "Configuration", "Password", "NotFound")

$Char = IniRead($Ini, "Configuration", "Character", "NotFound")

GUICtrlSetData($Username, $User)

GUICtrlSetData($Username, $Pass)

GUICtrlSetData($Username, $Char)

That should give you all the info needed, how can I make it so that there is like a "remember" feature like I was explaining?

Share this post


Link to post
Share on other sites

if you have globalized or dimed $User... once you have read the ini into user it is remembered throughout the script until it is terminated

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

I know that but how can I get the script to work properly?

Share this post


Link to post
Share on other sites

if i understand you scriptlet above correctly... you are asking for a user name with this

$Username = GUICtrlCreateInput("Username", 80, 25, 140, 20)

then when they press the "login" button. you are reading the $User from the ini with this

$User = IniRead($Ini, "Configuration", "UserName", "NotFound")

thenm you are replacing what the user typed in as their $Username with your ini read of $User with this

GUICtrlSetData($Username, $User)

thus... the information put in the $username in the GUI is lost

maybe you want to iniwrite ?????

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

I will just put the whole script here... I really didn't want to though...

#include <GuiConstants.au3>
; Order = left|up|width|height
$Path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\World of Warcraft\", "InstallPath")
$WoW = $Path & "WoW.exe"
$Ini = $Path & "login.ini"

;If Not IsDeclared('WS_CLIPSIBLINGS') Then Global $WS_CLIPSIBLINGS = 0x04000000

GUICreate("WoW Auto Login", 240, 125, (@DesktopWidth - 240) / 2, (@DesktopHeight - 125) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)

$LoginL = GUICtrlCreateGroup("Login", 10, 10, 220, 105)
$UsernameL = GUICtrlCreateLabel("Username:", 20, 25, 50, 20)
$Username = GUICtrlCreateInput("Username", 80, 25, 140, 20)
$PasswordL = GUICtrlCreateLabel("Password:", 20, 45, 50, 20)
$Password = GUICtrlCreateInput("Password", 80, 45, 140, 20, $ES_PASSWORD)
$CharacterL = GUICtrlCreateLabel("Character Number (1-10):", 20, 65, 120, 20)
$Character = GUICtrlCreateInput("1", 150, 65, 70, 20)
$Login = GUICtrlCreateButton("Login", 90, 85, 60, 20)

DirRemove($Path & "WDB", 1)

GUISetState()
While 1
    $msg = GUIGetMsg()
    Select
    ; Login
        Case $msg = $Login
                $User = IniRead($Ini, "Configuration", "UserName", "NotFound")
                $Pass = IniRead($Ini, "Configuration", "Password", "NotFound")
                $Char = IniRead($Ini, "Configuration", "Character", "NotFound")
                GUICtrlSetData($Username, $User)
                GUICtrlSetData($Username, $Pass)
                GUICtrlSetData($Username, $Char)
                FileDelete($Ini)
                IniWrite($Ini, "Configuration", "UserName", $Username)
                IniWrite($Ini, "Configuration", "Password", $Password)
                IniWrite($Ini, "Configuration", "WoW", $WoW)
                IniWrite($Ini, "Configuration", "Character", $Character)
                IniWrite($Ini, "Configuration", "Title", "World of Warcraft")
                IniWrite($Ini, "Configuration", "Delay", "13000")
                IniWrite($Ini, "Configuration", "Delay2", "6000")
            Else
                IniWrite($Ini, "Configuration", "UserName", $Username)
                IniWrite($Ini, "Configuration", "Password", $Password)
                IniWrite($Ini, "Configuration", "WoW", $WoW)
                IniWrite($Ini, "Configuration", "Character", $Character)
                IniWrite($Ini, "Configuration", "Title", "World of Warcraft")
                IniWrite($Ini, "Configuration", "Delay", "13000")
                IniWrite($Ini, "Configuration", "Delay2", "6000")
            EndIf
            
            $Character = IniRead($Ini, "Configuration", "Character", "NotFound")
            If $Character > 10 Or $Character < 0 Then
                MsgBox(48, "WoW Auto Login", "Error!" & @CRLF & "You have typed a character number that is out of bounds." & @CRLF & "Click OK to continue.")
                Exit
            EndIf
            
            $Title = IniRead($Ini, "Configuration", "Title", "NotFound")
            
            If WinExists($Title) Then
                ProcessClose("WoW.exe")
                Sleep(5000)
                Run($WoW)
            Else
                Run($WoW)
            EndIf
            
            $Delay = IniRead($Ini, "Configuration", "Delay", "NotFound")
            $Delay2 = IniRead($Ini, "Configuration", "Delay2", "NotFound")
            
            Sleep($Delay)
            Send($Username)
            Send("{TAB}")
            Send($Password)
            Send("{ENTER}")
            Sleep($Delay2)
            
            $DW = @DesktopWidth
            $DH = @DesktopHeight
            If $DW = 800 And $DH = 600 Then
                MouseClick("left", 701, 84, 1, 10)
            Else
                If $DW = 1024 And $DH = 768 Then
                    MouseClick("left", 835, 110, 1, 10)
                Else
                    MsgBox(48, "WoW Auto Login", "Error!" & @CRLF & "Your desktop resolution isn't supported, please change your desktop resolution to either 800 x 600 or 1024 x 768." & @CRLF & "Click OK to continue.")
                    Exit
                EndIf
            EndIf
            
            Send("{DOWN " & $Character & "}")
            Sleep(1000)
            Send("{ENTER}")
            Exit
            
        Case $msg = $GUI_EVENT_CLOSE
            Exit
    EndSelect
WEnd

Share this post


Link to post
Share on other sites

did you read my last post... after all that

this

FileDelete($Ini)
IniWrite($Ini, "Configuration", "UserName", $Username)

re-writes the ini with the info read from the ini.... the user input is still lost

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

No, it reads in all the stuff, sets it to the input fields, then deletes the ini, makes a new one with new values.

Share this post


Link to post
Share on other sites

i have lots of errors with your script

1

$Path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\World of Warcraft\", "InstallPath")

then

DirRemove($Path & "WDB", 1)

****** the $path is not a Dir that can be removed

2

; Login

Case $msg = $Login

then

Else

IniWrite($Ini, "Configuration", "UserName", $Username)

******* the "Else" is for an "if" statement... not a "Case"

3

i dunno

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

sorry.... maybe my number "1" above will work...

if you have a folder named "WDB" but you never write to that folder in your script. thus it will remove that folder... but your ini is written somewhere else

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

the first two issues you adressed works (removed WDB folder).

The ini gets saved to the WoW base directory.

I am clueless of how to work the Case crap and how to get it to do the Ini stuff I need....

Share this post


Link to post
Share on other sites

ok

if i were writting this script.... i would

1

put a "save info" button on the gui

2

when the script is started it would look for ( and if found) read the ini and set the info into the gui

3

when they press login it just runs... no more ini stuff

8)

number 1 above

GUICreate("WoW Auto Login", 240, 125, (@DesktopWidth - 240) / 2, (@DesktopHeight - 125) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)

$LoginL = GUICtrlCreateGroup("Login", 10, 10, 220, 105)
$UsernameL = GUICtrlCreateLabel("Username:", 20, 25, 50, 20)
$Username = GUICtrlCreateInput("Username", 80, 25, 140, 20)
$PasswordL = GUICtrlCreateLabel("Password:", 20, 45, 50, 20)
$Password = GUICtrlCreateInput("Password", 80, 45, 140, 20, $ES_PASSWORD)
$CharacterL = GUICtrlCreateLabel("Character Number (1-10):", 20, 65, 120, 20)
$Character = GUICtrlCreateInput("1", 150, 65, 70, 20)
$Login = GUICtrlCreateButton("Login", 100, 87, 60, 20)
$SaveIni = GUICtrlCreateButton("Save Info", 30, 87, 60, 20)

DirRemove($Path & "WDB", 1)

GUISetState()
While 1

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

If you can show me how to do number 2 that you listed, I will try number 3.

Share this post


Link to post
Share on other sites

Number 2 Above

this

DirRemove($Path & "WDB", 1)
Ini_Reader(); ****** ad this line here
GUISetState()
While 1

and this at the very bottom of yopur script

;----------- Functions --------------------


Func Ini_Reader()
    If FileExists($Ini) Then
        $User = IniRead($Ini, "Configuration", "UserName", "NotFound")
        $Pass = IniRead($Ini, "Configuration", "Password", "NotFound")
        $Char = IniRead($Ini, "Configuration", "Character", "NotFound")
        GUICtrlSetData($Username, $User)
        GUICtrlSetData($Password, $Pass)
        GUICtrlSetData($Character, $Char)
    EndIf
EndFunc

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

something i "thought" i taught you before

keep it clean

GUISetState()
While 1
    $msg = GUIGetMsg()
    
    If $msg = $Login Then
    ; hide the gui ????
        Call("Run_Login")
    EndIf
    
    If $msg = $SaveIni Then
        Call("Save_Ini")
    EndIf
    
    If $msg = $GUI_EVENT_CLOSE Then Exit
    
WEnd

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites

Alright, I fixed some stuff...

#include <GuiConstants.au3>
; Order = left|up|width|height
$Path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\World of Warcraft\", "InstallPath")
$WoW = $Path & "WoW.exe"
$Ini = $Path & "login.ini"

;If Not IsDeclared('WS_CLIPSIBLINGS') Then Global $WS_CLIPSIBLINGS = 0x04000000

GUICreate("WoW Auto Login", 240, 125, (@DesktopWidth - 240) / 2, (@DesktopHeight - 125) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)

$LoginL = GUICtrlCreateGroup("Login", 10, 10, 220, 105)
$UsernameL = GUICtrlCreateLabel("Username:", 20, 25, 50, 20)
$Username = GUICtrlCreateInput("Username", 80, 25, 140, 20)
$PasswordL = GUICtrlCreateLabel("Password:", 20, 45, 50, 20)
$Password = GUICtrlCreateInput("Password", 80, 45, 140, 20, $ES_PASSWORD)
$CharacterL = GUICtrlCreateLabel("Character Number (1-10):", 20, 65, 120, 20)
$Character = GUICtrlCreateInput("1", 150, 65, 70, 20)
$Login = GUICtrlCreateButton("Login", 80, 85, 60, 20)

DirRemove($Path & "WDB", 1)
Reader()
Writer()
Reader()
$Title = IniRead($Ini, "Configuration", "Title", "NotFound")
$Char = IniRead($Ini, "Configuration", "Character", "NotFound")
$Delay = IniRead($Ini, "Configuration", "Delay", "NotFound")
$Delay2 = IniRead($Ini, "Configuration", "Delay2", "NotFound")

GUISetState()
While 1
    $msg = GUIGetMsg()
    Select
    ; Login
        Case $msg = $Login
            If FileExists($Ini) Then
                FileDelete($Ini)
                Writer()
            EndIf

            If $Char > 10 Or $Char < 0 Then
                MsgBox(48, "WoW Auto Login", "Error!" & @CRLF & "You have typed a character number that is out of bounds." & @CRLF & "Click OK to continue.")
                Exit
            EndIf

            If WinExists($Title) Then
                ProcessClose("WoW.exe")
                Sleep(5000)
                Run($WoW)
            Else
                Run($WoW)
            EndIf

            Sleep($Delay)
            Send($Username)
            Send("{TAB}")
            Send($Password)
            Send("{ENTER}")
            Sleep($Delay2)

            $DW = @DesktopWidth
            $DH = @DesktopHeight
            If $DW = 800 And $DH = 600 Then
                MouseClick("left", 701, 84, 1, 10)
            Else
                If $DW = 1024 And $DH = 768 Then
                    MouseClick("left", 835, 110, 1, 10)
                Else
                    MsgBox(48, "WoW Auto Login", "Error!" & @CRLF & "Your desktop resolution isn't supported, please change your desktop resolution to either 800 x 600 or 1024 x 768." & @CRLF & "Click OK to continue.")
                    Exit
                EndIf
            EndIf

            Send("{DOWN " & $Char & "}")
            Sleep(1000)
            Send("{ENTER}")
            Exit

        Case $msg = $GUI_EVENT_CLOSE
            Exit
    EndSelect
WEnd

;--------------------------------------------- Functions----------------------------------------------

Func Reader()
    If FileExists($Ini) Then
        $User = IniRead($Ini, "Configuration", "UserName", "NotFound")
        $Pass = IniRead($Ini, "Configuration", "Password", "NotFound")
        $Char = IniRead($Ini, "Configuration", "Character", "NotFound")
        GUICtrlSetData($Username, $User)
        GUICtrlSetData($Password, $Pass)
        GUICtrlSetData($Character, $Char)
    Else
        Writer()
    EndIf
EndFunc  ;==>Reader

Func Writer()
    If Not FileExists($Ini) Then
        IniWrite($Ini, "Configuration", "UserName", $Username)
        IniWrite($Ini, "Configuration", "Password", $Password)
        IniWrite($Ini, "Configuration", "WoW", $WoW)
        IniWrite($Ini, "Configuration", "Character", $Character)
        IniWrite($Ini, "Configuration", "Title", "World of Warcraft")
        IniWrite($Ini, "Configuration", "Delay", "13000")
        IniWrite($Ini, "Configuration", "Delay2", "6000")
    Else
        Reader()
    EndIf
EndFunc  ;==>Writer

Could you tell me what to fix so that I don't always get 5 as character, 7 pass password and 9 as character no matter what?

Also could you tell me what I could do to improve my code?

Share this post


Link to post
Share on other sites

#19 ·  Posted (edited)

DirRemove($Path & "WDB", 1)
Reader()
Writer()
********
Else
Reader()
EndIf
EndFunc;==>Writer
*********
Reader()

??????

8)

Edited by Valuater

NEWHeader1.png

Share this post


Link to post
Share on other sites

I am not quite sure what you meant by that...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0