Jump to content
Sign in to follow this  
AnonymousX

Reading someone else's GUI radio button

Recommended Posts

AnonymousX

Hello, 

I'm wondering if it is possible to read a radio button off a GUI running by another program? 

Someone created these Outlook emails that when open appear to be in a GUI format. I could easily come up with a way of navigating these fields by using tab inputs, and then copying specific fields that I need. However there is a spot on the form that has 4 choices of radio buttons, asking for what the status of the task is, and I have no idea how to store which one of these was pressed. 

End game is to be able to go through thousands of these forms, take input from specific fields from this GUI form in outlook and copy into cells in an excel spreadsheet. I believe I could create a script to do everything I need, if I could just obtain the value from which radio button was pressed.

Any advice on how to obtain which radio button was press in this outlook form would be appreciated.

Thanks,

If I knew VBA better Outlook might have its own functions for figuring this out.

 

Example:

image.png

In this example I'd want to be able to know that the 2nd or Assigned radio button was selected. Only 1 button is able to be selected at a time. I'm assuming the way to do this would be to tab through the form get to the first box and then run some command to check if pressed then if no, keep checking till I find which of the 4 were pressed.

Edited by AnonymousX

Share this post


Link to post
Share on other sites
InunoTaishou

Depends on the type of GUI that is in the outlook email. If they used activex to create the form and controls, I wouldn't know how to do it, but if you can use the AutoIt tool to read the info about the control then they used a a Form Control, and that is very easy to work with.

ControlGetText
ControlSetText
ControlClick
ControlCommand

Are the functions you'd want to use.

Idk how you'd use some VBA code to intereact with these. You'd need to know the control name of each of the controls. Once you've got it then you could work from there.

  • Like 1

Share this post


Link to post
Share on other sites
AnonymousX
1 hour ago, InunoTaishou said:

Depends on the type of GUI that is in the outlook email. If they used activex to create the form and controls, I wouldn't know how to do it, but if you can use the AutoIt tool to read the info about the control then they used a a Form Control, and that is very easy to work with.

ControlGetText
ControlSetText
ControlClick
ControlCommand

Are the functions you'd want to use.

Idk how you'd use some VBA code to intereact with these. You'd need to know the control name of each of the controls. Once you've got it then you could work from there.

Thanks, I'll give that a shot. I had tried using this to see if I could get me anything to work off of:

WinGetText("[ACTIVE]")
WinGetHandle("[ACTIVE]")

But wasn't helping.

What parameters should I use to be able to get the text of the currently selected item?

In the past when using the WinGetText or handle, I've always created a hot key command that calls a function that runs a message box with the info from the active window. I was thinking something like this:

Hotkeyset("!4", "Get")

Func Get()

MsgBox(0,"",ControlGetText("[ACTIVE]","[ACTIVE]","[ACTIVE]"))

EndFunc

But I just get blank message boxes when doing this.

Share this post


Link to post
Share on other sites
InunoTaishou

Open up the AutoIt Window Info Tool and move the Finder tool over the controls to see if you get any info. If you do then copy/paste the results here

Share this post


Link to post
Share on other sites
AnonymousX
23 hours ago, InunoTaishou said:

Open up the AutoIt Window Info Tool and move the Finder tool over the controls to see if you get any info. If you do then copy/paste the results here

Didn't know that existed. 

Here's what it spit out:

>>>> Window <<<<
Title:  Service Dispatch  
Class:  rctrl_renwnd32
Position:   2050, 162
Size:   1393, 810
Style:  0x16CF0000
ExStyle:    0x00040100
Handle: 0x006A2744

>>>> Control <<<<
Class:  F3 Server 16700000
Instance:   6
ClassnameNN:    F3 Server 167000006
Name:   
Advanced (Class):   [CLASS:F3 Server 16700000; INSTANCE:6]
ID: 
Text:   
Position:   15, 360
Size:   382, 42
ControlClick Coords:    106, 24
Style:  0x56000000
ExStyle:    0x00000000
Handle: 0x003A2710

>>>> Mouse <<<<
Position:   2179, 546
Cursor ID:  0
Color:  0xFFFFFF

I'm not thinking there is going to be any simple solution for me on this one. I'll probably end up dropping this idea.

Appreciate your support! 

Share this post


Link to post
Share on other sites
InunoTaishou

I've been working a bit with VBA at work but I was the one creating the controls so I don't know how to interact with a form someone else made. You can still do some googling and I'm sure someone has tried to do the same thing you're trying to do.

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  

  • Similar Content

    • XinYoung
      By XinYoung
      For fun, I'm building an app that opens a webpage and refreshes it every 30 seconds.
      But once the script performs _IEAction($oIE, "refresh"), the GUI closes.
      Any help is appreciated.
       

      #include <ButtonConstants.au3>
      #include <EditConstants.au3>
      #include <GUIConstantsEx.au3>
      #include <StaticConstants.au3>
      #include <WindowsConstants.au3>
      #include <WinAPIFiles.au3>
      #include <Array.au3>
      #include <File.au3>
      #include <Excel.au3>
      #include <DateTimeConstants.au3>
      #include <MsgBoxConstants.au3>
      #include <WinAPIShellEx.au3>
      #include <MsgBoxConstants.au3>
      #include <Date.au3>
      #include <ComboConstants.au3>
      #include <guimenu.au3>
      #include <IE.au3>
      HotKeySet("{F4}", "_Exit")
      ;Open the file(s) in the selected folder
      $extension = ".txt"
      $app2openWith = @SystemDir & "\notepad.exe"
      Func Begin()
          Global $loopTrick = 0
          #Region ### START Koda GUI section ### Form=c:\users\mchu\downloads\autoit\my code\form1.kxf
          Global $UI = GUICreate("Hit Em Up!", 256, 113, -1, -1)
          GUISetBkColor(0x000000)
          $menu = _GUICtrlMenu_GetSystemMenu($UI)
          _GUICtrlMenu_EnableMenuItem($menu, $SC_CLOSE, 1, False)
          Global $url = GUICtrlCreateInput("https://www.youtube.com/watch?v=dQw4w9WgXcQ", 81, 8, 160, 21)
          $Label1 = GUICtrlCreateLabel("Target:", 16, 8, 55, 17)
          GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
          GUICtrlSetColor(-1, 0x00FF00)
          Global $StartBut = GUICtrlCreateButton("Start", 16, 40, 67, 25)
          GUICtrlSetFont(-1, 13, 800, 0, "MS Sans Serif")
          GUICtrlSetBkColor(-1, 0x008000)
          $Label2 = GUICtrlCreateLabel("(Press F4 to Exit)", 96, 40, 8000, 17)
          GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
          GUICtrlSetColor(-1, 0x00FF00)
          GUISetState(@SW_SHOW)
          #EndRegion ### END Koda GUI section ###
          While 1
              $UIfunc = GUIGetMsg()
              Select
                  Case $UIfunc = $GUI_EVENT_CLOSE
                      _Exit()
                  Case $UIfunc = $StartBut
                      If GUICtrlRead($url) = "" Then
                          MsgBox(48, "Um...", "Give me a target you idiot.")
                      Else
                          GUICtrlSetState($url, $GUI_DISABLE)
                          GUICtrlSetState($StartBut, $GUI_DISABLE)
                          Start()
                      EndIf
              EndSelect
          WEnd
      EndFunc   ;==>Begin
      Func Start()
          If $loopTrick = 0 Then
              Global $oIE = _IECreate(GUICtrlRead($url))
              _IELoadWait($oIE)
              Again()
          ElseIf $loopTrick = 1 Then
              Sleep(3000)
              _IEAction($oIE, "refresh")
              Sleep(3000)
              Start()
          EndIf
      EndFunc   ;==>Start
      Func Again()
          $loopTrick = 1
          Start()
      EndFunc   ;==>Again
      Func _Exit()
          Exit
      EndFunc   ;==>_Exit
    • kcvinu
      By kcvinu
      Hi all,
      I have a button created with _GUICtrlButton_Create function. I know that this function returns a handle of button instead of an ID. So i have obtain control ID by calling _WinAPI_GetDlgCtrlID function. After that i have tried the GUICtrlSetBkColor function. But it didnt worked. Any suggestions will be appreciated. Thanks in advance. 
      Note : - The window which carries this button is not created with native gui create function. Instead, it is created with CreateWindowEx api function.
    • kcvinu
      By kcvinu
      Hi all,
      I am playing with _GUICtrlButton_Create function. How can i change this button's (or the entire form's) font ?. The in-built GUICtrlSetFont function is not working even when i convert the control handle to control ID with _WinAPI_GetDlgCtrlID ( ) function.  Do i need to use CreateFont api finction and send WM_SETFONT message ? Or is there any other easy and safe ways to do this ?. Thanks in advance.
      Note : This window is created by CreateWindowEx function, not by GUICreate function. 
    • Jake_s
      By Jake_s
      Hi All, 
       
      I am a begginer in auto it. I am trying to build simple gui that will show me if for example notepad.exe process is currently running on the system. I have built something like this, but when I execute it shows me message boxes, but I want the results to show in gui. If you can help me start with this.
       
      Thanks
       
        #include <MsgBoxConstants.au3>
      #include <GUIConstantsEx.au3>

      ActiveProcess()

      Func ActiveProcess()
      GUICreate("Act")
               ProcessExists("wuauclt.exe")

             If ProcessExists("wuauclt.exe") Then
       MsgBox($MB_SYSTEMMODAL, "", "Windows Upates are running")
           Else
       MsgBox($MB_SYSTEMMODAL, "", "Windows Updates are not running")
       EndIf
         ;Notepad

               ProcessExists("notepad.exe")

               If ProcessExists("notepad.exe") Then
      MsgBox($MB_SYSTEMMODAL, "", "Notepad is running")
              Else
      MsgBox($MB_SYSTEMMODAL, "", "Notepad is not running")
      EndIf  
       
×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.