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