gui login

proc LaunchApp {appPath} {

    set pdir [pwd]
    cd "$appPath"
    set pid [::twapi::create_process appclient.exe -fullscreen true]
    cd $pdir
    if {[regexp "\[0-9]+(.*?)\[0-9]+" $pid match]} {
        #logMsg2File Sanity  [list "Launch app client" "Successful"]
        after 10000
        LoginToApp $appPath
    } else {
        #logMsg2File Sanity  [list "Launch app client" "Fail"]

    }

}

proc LoginToApp {appPath} {

    global ip
    global userid
    global password
    global flag
    set logininfoFlag 0
    set appWindowCount 0
    set loginWindowCount 0
    set status 0
    while {$appWindowCount != 10} {
        set windows [twapi::find_windows -text "2000 APP GUI"]
        if {[regexp "\[0-9]+(.*?)HWND" $windows match]} {
            set win [lindex $windows 0]
            twapi::set_foreground_window $win
            #logMsg2File Sanity  [list "Find App Gui" "Successful"]
            set appWindowCount 10
            set logininfoFlag 1
        } else  {
            incr appWindowCount
            #logMsg2File Sanity  [list "attempt $appWindowCount searching \
                   # App Gui" "Successful"]
            after 10000
        }
    }





    if {$logininfoFlag == 1} {
        while {$loginWindowCount != 3} {
            set windows [twapi::find_windows -text Login]
            if {[regexp "\[0-9]+(.*?)HWND" $windows match]} {
                set win [lindex $windows 0]
                twapi::set_foreground_window $win
                #logMsg2File Sanity  [list "Find login screen" "Successful"]
                set loginWindowCount 3
                set status 1
            } else  {
                incr loginWindowCount
                #logMsg2File Sanity  [list "attempt $appWindowCount Waiting \
                       # login window" "Successful"]
                after 10000
            }
        }
    } else {
        #logMsg2File Sanity  [list "Find App Gui" "Fail"]

    }


    if {$status == 1} {
        if {[twapi::set_foreground_window $win]} {
            #logMsg2File Sanity  [list "set login screen as a foreground" \
                   # "Successful"]
        } else {
            #logMsg2File Sanity  [list "set login screen as a foreground" \
                    #"Fail"]

        }
    } else  {
        #logMsg2File Sanity  [list "Find login screen" "Fail"]
        exit
    }

    set windows [twapi::find_windows -text "Login settings"]
    twapi::set_foreground_window $win
    set win [lindex $windows 0]
    after 200
    foreach {x y} [twapi::get_window_coordinates $win] break
    twapi::move_mouse [incr x -10] [incr y -30]
    twapi::click_mouse_button left
    after 2000

    twapi::send_keys {{CLEAR}}
    after 100
    twapi::send_input_text $ip
    after 100
    twapi::send_keys {{TAB}}
    after 100
    twapi::send_input_text $userid
    after 100
    twapi::send_keys {{TAB}}
    after 100
    twapi::send_input_text $userid
    after 100
    twapi::send_keys {{ENTER}}
    after 7000

    set windows [twapi::find_windows -text "Change Password, Current Password Expired"]

    if {[regexp "\[0-9]+(.*?)HWND" $windows match]} {
        #logMsg2File Sanity  [list "Find chnage password screen" "Successful"]
    } else {
        #logMsg2File Sanity  [list "Find chnage password screen" "Fail"]

    }

    set win [lindex $windows 0]
    after 2000

    if {[twapi::set_foreground_window $win]} {
        #logMsg2File Sanity  [list "set change password screen as a foreground" \
                "Successful"]
    } else {
        #logMsg2File Sanity  [list "set change password screen as a foreground" \
                "Fail"]
        #exit
    }

    twapi::click_mouse_button left

    after 100
    twapi::send_input_text $userid
    after 100
    twapi::send_keys {{TAB}}
    after 1000


    twapi::send_input_text $password
    after 1000
    twapi::send_keys {{TAB}}
    after 1000

    after 1000
    twapi::send_input_text $password

    after 1000

    twapi::send_keys {{ENTER}}



    after 20000
    AppPluginInstall $appPath


}

LaunchApp "C:/sanity"

# this is a scenario where I am launching exe application, it prompt me for login window, once I login it prompt me another window for password change. # I tried to keep it short but I am sorry still it's a bit long