Jump to content

"IsChecked" not working


thanhlam
 Share

Recommended Posts

Hi, I try to use AutoIt to control a soft I have written in C# 4.0.
I can start, stop the software, change the state of the checkbox.

  • Something strange to uncheck the check box:
    ; check the checkbox (working fine)
    ControlCommand($win, "", $checkbox, "Check", "")
    
    ; uncheck the checkbox (NOT WORKING)
    ControlCommand($win, "", $checkbox, "UnCheck", ""
    
    ; uncheck the checkbox (working)
    ControlCommand($win, "", $checkbox, "Check", "")
  • Unfortunately I did not managed to get the check box status using :
    $res = ControlCommand($win, "", $checkbox, "IsChecked", "")​
Link to comment
Share on other sites

Hi Saudumm,

Could you be more specific in how to attach the file ? I trye to use "My media" but it propose only to select content that have been uploaded. I found no way to upload a file :

In the full editor there's "Attach Files" under the editor window. There you can select a file from your computer (1) and upload it (2). After that you can attach it to your post (3) :-)

post-65042-0-48997600-1378816901_thumb.p

Link to comment
Share on other sites

Thanks for your help Saudumm,

but even in the full editor, just under the textbox I immediately have the "Add Reply, Preview Post or Cancel" line.

There is nothing in between that would allow me to attach a file (sorry I cannot attach a screenshot to show you  :D)

There must be a setting somewhere that prevent me from adding files (I just created my account today).

Regards

Link to comment
Share on other sites

Here is the link to the visual studio project in C# and the test.au3

https://www.dropbox.com/s/fqy75h0qdbou3et/test.7z

Here is the code of test.au3.

 
$path = "WindowsFormsApplication1WindowsFormsApplication1binDebug"
$bin = "WindowsFormsApplication1.exe"
$soft = "[CLASS:WindowsForms10.Window.8.app.0.2bf8098_r20_ad1]"
$checkbox = "[NAME:cbTest]"
$checkbox2 = "[CLASS:WindowsForms10.BUTTON.app.0.2bf8098_r20_ad1; INSTANCE:1]"
 
Run($path & $bin, $path)
$win = WinWaitActive($soft)
 
; "Uncheck" is not working, have to "Check" a 2nd time to uncheck...
ControlCommand($win, "", $checkbox, "Check", "")
Sleep(500)
ControlCommand($win, "", $checkbox, "Check", "")
Sleep(500)
ControlCommand($win, "", $checkbox, "Check", "")
Sleep(500)
$res = ControlCommand($win, "", $checkbox, "IsChecked", "")
if 1 = @error Then
   MsgBox(4, "ERROR", "ERROR")
Else
   MsgBox(4, "IsChecked", $res)
EndIf
 
; Using class
ControlCommand($win, "", $checkbox2, "Check", "") ; uncheck
Sleep(500)
ControlCommand($win, "", $checkbox2, "Check", "") ; recheck
Sleep(500)
$res = ControlCommand($win, "", $checkbox2, "IsChecked", "")
if 1 = @error Then
   MsgBox(4, "ERROR", "ERROR")
Else
   MsgBox(4, "IsChecked", $res)
EndIf
 
WinClose($soft)

 

Link to comment
Share on other sites

So, no luck on my end with your script.

I found those threads:

'?do=embed' frameborder='0' data-embedContent>>

'?do=embed' frameborder='0' data-embedContent>>

'?do=embed' frameborder='0' data-embedContent>>

It seems like your .Net-Checkbox is a non-standard checkbox and is not supported by AutoIt. :(

Maybe somenone with more knowledge can help you.

Link to comment
Share on other sites

It is good thing that you have control over your own .NET application. My advice is this:

- Open your C# project, in the Form select your checkbox, click on the thunder icon (events icon), and double click on the event for "KeyDown"
- Then in your C# code make sure you add this code:
 

private void cbTest_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.F8)
    {
        cbTest.Checked = true;
    }
    else if (e.KeyCode == Keys.F12)
    {
        cbTest.Checked = false;
    }
}

- Then make sure you use this in your autoit script:
 

$path = "WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\"
$bin = "WindowsFormsApplication1.exe"
$soft = "Form1"
$checkbox = "[NAME:cbTest]"

Run($path & $bin, $path)
$win = WinWaitActive($soft)

ControlSend($win, '', $checkbox, "{F8}")
MsgBox(0, '', 'it is checked!')
ControlSend($win, '', $checkbox, "{F12}")
MsgBox(0, '', 'it is unchecked!')

WinClose($soft)

Edit: Another idea:
You could create a local TCP connection between autoit and your C# application, and then exchange informations (i.e. checked state), and make requests for checking/unchecking checkboxes or controlling other controls.

 

Edited by dragan
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...