Jump to content

Recommended Posts

Posted

Basically, depending on which account i login in to, there are different id's (I know, its stupid) anyhow I came up with something like this, I just can't get it to work, I think I might be close tho. Please give me an assist.

For $i = 1 To 3
$c_status0 = "mx5677[R:0]" & StringFormat("",$i)
$c_status1 = "mx5671[R:0]" & StringFormat("",$i)
$c_status2 = "mx5671[R:0]_image" & StringFormat("",$i) 
Next
Sleep(250)

Sleep(1000)
$try2 = _IEGetObjById($oIE, $i)
_IEAction($try2, "click")
$hwnd = _IEPropertyGet($oIE, "hwnd")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")
Posted

For $i = 1 To 3
$c_status0 = "mx5677[R:0]" & StringFormat("",$i)
$c_status1 = "mx5671[R:0]" & StringFormat("",$i);<<<<<<This for next loop makes no sense
$c_status2 = "mx5671[R:0]_image" & StringFormat("",$i) 
Next
Sleep(250)

Sleep(1000)
$try2 = _IEGetObjById($oIE, $i) ;<<<<<<<<< $i here has no meaning its only valid in the loop
_IEAction($try2, "click")
$hwnd = _IEPropertyGet($oIE, "hwnd")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")

You need to explain what you are trying to do.

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Posted

You need to explain what you are trying to do.

Maybe the title is a little misleading. I'm asking how do take 3 variables and have 1 variable that fits one of the three and then sends a click command to that element based on the id returned?

Posted

Try this

For $i = 1 To 3
    $try2 = _IEGetObjById($oIE, $i)
    If IsObj($try2) Then
        _IEAction($try2, "click")
    EndIf
Next
$hwnd = _IEPropertyGet($oIE, "hwnd")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Posted

Try this

For $i = 1 To 3
    $try2 = _IEGetObjById($oIE, $i)
    If IsObj($try2) Then
        _IEAction($try2, "click")
    EndIf
Next
$hwnd = _IEPropertyGet($oIE, "hwnd")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")

The $c_status are each of the different id's that is shown depending on which username i login into with. I only added the the StringFormat think that each $c_status variable will be marked as $i. Then from there IE would click on which ever one returned for $i. So I added your portion back into the loop and I get a status no match for 1,2 & 3

For $i = 1 To 3
$c_status0 = "mx5677[R:0]" & StringFormat("",$i)
$c_status1 = "mx5671[R:0]" & StringFormat("",$i)
$c_status2 = "mx5671[R:0]_image" & StringFormat("",$i) 
 $try2 = _IEGetObjById($oIE, $i)
    If IsObj($try2) Then
        _IEAction($try2, "click")
    EndIf
Next
$hwnd = _IEPropertyGet($oIE, "hwnd")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")
Posted

So I discover that $i is returning with a value of 1 2 and 3. not the assigned ids.

i know i cant write it like this:

WinActivate("Activities and Tasks - Windows Internet Explorer")
WinWaitActive("Activities and Tasks - Windows Internet Explorer")
For $i = 1 To 4
$i = "mx5677[R:0]" ;& StringFormat("",$i)
$i = "mx5671[R:0]" ;& StringFormat("",$i)
$i = "mx5671[R:0]_image" ;& StringFormat("",$i) 
$i = "mx5677[R:0]_image" ;& StringFormat("",$i) 
;MsgBox(0, "", $i)
 $try2 = _IEGetObjById($oIE, $i)
    If IsObj($try2) Then _IEAction($try2, "focus")
    $hwnd = _IEPropertyGet($oIE, "hwnd")
    ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")
    If @error Then ConsoleWrite("There was an error " & $i & @CRLF)
    ;EndIf
Next

But essentially it would return like that picking which id fit for the logged in user. hopes this helps a little with the logic

Posted (edited)

OK, I think I get you now.

Its an array you need to store your strings in and loop through.

Local $aID[4] = ["mx5677[R:0]", "mx5671[R:0]", "mx5671[R:0]_image", "mx5677[R:0]_image"]

For $i = 0 To UBound($aID) -1
    $try2 = _IEGetObjById($oIE, $aID[$i])
    If IsObj($try2) Then _IEAction($try2, "focus")
    $hwnd = _IEPropertyGet($oIE, "hwnd"); rethink this, that function does not return a window or control handle
    ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")
    If @error Then ConsoleWrite("There was an error " & $i & @CRLF)
    ;EndIf
Next
Edited by JohnOne

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Posted

OK, I think I get you now.

Its an array you need to store your strings in and loop through.

Local $aID[4] = ["mx5677[R:0]", "mx5671[R:0]", "mx5671[R:0]_image", "mx5677[R:0]_image"]

For $i = 0 To UBound($aID) -1
    $try2 = _IEGetObjById($oIE, $aID[$i])
    If IsObj($try2) Then _IEAction($try2, "focus")
    $hwnd = _IEPropertyGet($oIE, "hwnd"); rethink this, that function does not return a window or control handle
    ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")
    If @error Then ConsoleWrite("There was an error " & $i & @CRLF)
    ;EndIf
Next

NICE!!!! Thats work perfect. Thanks! On last thing, it works perfect in source mode but when I compile it, on my second user account it acts as if it wants to open it and then nothing happens. I had this problem before, its like the script is stalling or something. Do you have any suggestions for a fix?

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
×
×
  • Create New...