Mitya Posted September 10, 2019 Share Posted September 10, 2019 Hi Everybody, I am a newbie here. I saw a few tutorial videos and I think this is the tool I need for long time. I have a repetitive process sometimes I need to do 1000 times unfortunately because of a poorly written application. Do you think that I can do the following ? I have this application: https://imgur.com/a/Y7mpsR6 On the right there is a huge list. I need to scroll over the whole list and click right on a specific person and click on the menu... Thats all, but need to do it a few times. Do you guys think that this is possible with this tool ? Thanks, Mitya Link to comment Share on other sites More sharing options...
FrancescoDiMuro Posted September 11, 2019 Share Posted September 11, 2019 (edited) Hi @Mitya, and welcome to the AutoIt forums The image you posted is not there anymore. Could you please post an image here, and describe what is, in details, the task you are trying to automate? Edited September 11, 2019 by FrancescoDiMuro Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette Link to comment Share on other sites More sharing options...
Subz Posted September 11, 2019 Share Posted September 11, 2019 @FrancescoDiMuro It appeared to be for a game rfactor2 @Mitya Forum doesn't support discussing game automation so you probably won't get any assistance with this, see Forum Rules for more info FrancescoDiMuro 1 Link to comment Share on other sites More sharing options...
FrancescoDiMuro Posted September 11, 2019 Share Posted September 11, 2019 @Subz Thanks for the information Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette Link to comment Share on other sites More sharing options...
Mitya Posted September 11, 2019 Author Share Posted September 11, 2019 2 hours ago, Subz said: @FrancescoDiMuro It appeared to be for a game rfactor2 @Mitya Forum doesn't support discussing game automation so you probably won't get any assistance with this, see Forum Rules for more info Hi @Subz, Well, actually this is not a game, but a tool which helps the league admins to find the places where the driver went off the track (cut a corner) based on a replay file. The tool is called ReplayOffice for rFactor 2. please find the image attached this time. Thanks, Mitya Link to comment Share on other sites More sharing options...
Mitya Posted September 11, 2019 Author Share Posted September 11, 2019 2 hours ago, FrancescoDiMuro said: Could you please post an image here, and describe what is, in details, the task you are trying to automate? Hi Francesco, So basically there are events collected that list on the right side of the picture. What we always need to do is go through all the list as many times as many drivers we have and click on the name and click the "Create clip". After we finished a driver, we can export the "clips" as a file and we need to manually check whether the driver really did cut a corner or not. The list itself is not filterable and it is not possible to order by name unfortunately. This is why I mentioned that this is a a "poorly written" or not finished application. Thiis process usually takes about 5-15 hours, depends on the track. Thanks, Mitya Link to comment Share on other sites More sharing options...
Mitya Posted September 11, 2019 Author Share Posted September 11, 2019 So guys, my question is simple: Is it worth me spending time with this tool ? Is it possible to do the job ? Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted September 11, 2019 Moderators Share Posted September 11, 2019 Mitya, Please do not bump your own threads within 24 hours. Remember this is not a 24/7 support forum - those who answer are only here because they like helping others and have some time to spare. From what I can see, this "ReplayOffice for rFactor 2" is an add-on tool for the "rFactor2" game which allows you to analyse at a later date data files stored from the in-game play - it does not have any effect on actions within the game itself. Am I correct in this? M23 P.S. And just to be absolutely clear - this is the Mod team determining the legality of the thread, so everyone else please keep out. Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Mitya Posted September 11, 2019 Author Share Posted September 11, 2019 2 minutes ago, Melba23 said: From what I can see, this "ReplayOffice for rFactor 2" is an add-on tool for the "rFactor2" game which allows you to analyse at a later date data files stored from the in-game play - it does not have any effect on actions within the game itself. Am I correct in this? Dear Melba23, Firstly, sorry for being impatient. You are right, this Replay Office is a post processing tool. In our world (simracing) it is usually used by league admins / race controllers. It has nothing to do with the game itself. Its input is a race replay (generated by the game) and this tool is able to collect events from the race like fastest lap, collisions, overtakes, etc, including corner cuts as well. You are able to filter for event types, but not for drivers. So when you want to collect all the corner cuts for a driver, you need to go through that huge list several times manually, which is really painful. I am a programmer in my private life, but I am on the other side (Unix/Linux) so these tools are new for me and I just wanted to know whether is it possible to automate that painful task with this tool. If yes, I might be need some help / pointers as well in the future, but that will be an other thread .. Thanks, Mitya Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted September 11, 2019 Moderators Share Posted September 11, 2019 Mitya, Thanks for the clarification - the Mod team will discuss the legality of the thread as it falls in a pretty grey area. We will get back to you ASAP. In the meantime, could you run the AutoIt3 Window Info tool on the GUI and post what information it gives you about the controls within - that will help us offer advice later if possible. Thanks for your understanding. Everyone else still keep out please. M23 FrancescoDiMuro 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Mitya Posted September 11, 2019 Author Share Posted September 11, 2019 3 hours ago, Melba23 said: In the meantime, could you run the AutoIt3 Window Info tool on the GUI and post what information it gives you about the controls within - that will help us offer advice later if possible. Dear Melba23, I created a video, that might help to understand what is this app... What AutoIT info does with it is also included... https://youtu.be/SJAJONpYB1A FrancescoDiMuro 1 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted September 11, 2019 Moderators Share Posted September 11, 2019 Mitya, We are going to let the thread run - so if anyone now wants to join in, please feel free. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Mitya Posted September 11, 2019 Author Share Posted September 11, 2019 4 minutes ago, Melba23 said: Mitya, We are going to let the thread run - so if anyone now wants to join in, please feel free. M23 Dear Melba23, Thank you very much... Link to comment Share on other sites More sharing options...
seadoggie01 Posted September 12, 2019 Share Posted September 12, 2019 From his video, it looks like the program is written in .Net code (WinForms I think). The Events table that he wants to automate doesn't have individual IDs for each line. I think that the table is a DataGrid, but it's been a while since I used tables in .Net Mitya: I think you'll need to look into UI Automation to be able to automate this. After the basics, this link may come in handy: https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-datagrid-control-type I'm not familiar with UI Automation, but there are plenty of people here who are! Mitya 1 All my code provided is Public Domain... but it may not work. Use it, change it, break it, whatever you want. Spoiler My Humble Contributions:Personal Function Documentation - A personal HelpFile for your functionsAcro.au3 UDF - Automating Acrobat ProToDo Finder - Find #ToDo: lines in your scriptsUI-SimpleWrappers UDF - Use UI Automation more Simply-erKeePass UDF - Automate KeePass, a password managerInputBoxes - Simple Input boxes for various variable types Link to comment Share on other sites More sharing options...
FrancescoDiMuro Posted September 12, 2019 Share Posted September 12, 2019 (edited) @Mitya Could you please post the AutoItWindowInfo Tool summary of the control you want to automate (last tab in the Au3_Info)? What you did in the video, but put it here, so we can assist you Edited September 12, 2019 by FrancescoDiMuro Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette Link to comment Share on other sites More sharing options...
Mitya Posted September 12, 2019 Author Share Posted September 12, 2019 1 hour ago, FrancescoDiMuro said: @Mitya Could you please post the AutoItWindowInfo Tool summary of the control you want to automate (last tab in the Au3_Info)? What you did in the video, but put it here, so we can assist you Hi Francesco, Here is the summary: expandcollapse popup>>>> Window <<<< Title: Race Analyzer - D:\Steam\steamapps\common\rFactor 2\UserData\Replays\Melbourne Grand Prix Circuit P1 55.Vcr Class: WindowsForms10.Window.8.app.0.225e691_r9_ad1 Position: 405, 111 Size: 1378, 781 Style: 0x16CF0000 ExStyle: 0x00050100 Handle: 0x0000000000030DD8 >>>> Control <<<< Class: WindowsForms10.Window.8.app.0.225e691_r9_ad1 Instance: 23 ClassnameNN: WindowsForms10.Window.8.app.0.225e691_r9_ad123 Name: tableEvents Advanced (Class): [NAME:tableEvents] ID: 198606 Text: Position: 976, 77 Size: 377, 621 ControlClick Coords: 139, 321 Style: 0x56010000 ExStyle: 0x00000000 Handle: 0x00000000000307CE >>>> Mouse <<<< Position: 1528, 540 Cursor ID: 0 Color: 0x903A3A >>>> StatusBar <<<< >>>> ToolsBar <<<< >>>> Visible Text <<<< toolStripContainer2 Events toolStripContainer1 toolStrip2 toolStrip1 menuStrip1 >>>> Hidden Text <<<< So I hope it is possible to solve Really appreciate every help. Thanks, Mitya Link to comment Share on other sites More sharing options...
FrancescoDiMuro Posted September 12, 2019 Share Posted September 12, 2019 @Mitya Well, since it seems like a ListView (or a DataGrid as @seadoggie01 suggested), you could try to use _GUICtrl_ListView* functions to interact with that type of control. One quick test you can do is something like this: #include <GuiListView.au3> Global $hdlListView, _ $intListViewItemsCount = 0 $hdlListView = ControlGetHandle("[REGEXPTITLE:(?i)Race Analyzer \-.*\.vcr]", "", "[CLASS:WindowsForms10.Window.8.app.0.225e691_r9_ad1; INSTANCE:23]") If IsHWnd($hdlListView) Then $intListViewItemsCount = _GUICtrlListView_GetItemCount($hdlListView) If @error Then ConsoleWrite("_GUICtrlListView_GetItemCount() ERR: " & @error & @CRLF) Else MsgBox(0, '', "Items count in the Control: " & $intListViewItemsCount) EndIf Else ConsoleWrite("$hdlListView is not an Handle. Error: " & @error & @CRLF) EndIf Run it and let us know Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette Link to comment Share on other sites More sharing options...
Mitya Posted September 12, 2019 Author Share Posted September 12, 2019 1 hour ago, FrancescoDiMuro said: @Mitya Well, since it seems like a ListView (or a DataGrid as @seadoggie01 suggested), you could try to use _GUICtrl_ListView* functions to interact with that type of control. One quick test you can do is something like this:Run it and let us know Hi Francesco, I can't wait to get home to try this. Big thanks! Mitya Link to comment Share on other sites More sharing options...
Mitya Posted September 12, 2019 Author Share Posted September 12, 2019 10 hours ago, FrancescoDiMuro said: @Mitya Well, since it seems like a ListView (or a DataGrid as @seadoggie01 suggested), you could try to use _GUICtrl_ListView* functions to interact with that type of control. One quick test you can do is something like this: #include <GuiListView.au3> Global $hdlListView, _ $intListViewItemsCount = 0 $hdlListView = ControlGetHandle("[REGEXPTITLE:(?i)Race Analyzer \-.*\.vcr]", "", "[CLASS:WindowsForms10.Window.8.app.0.225e691_r9_ad1; INSTANCE:23]") If IsHWnd($hdlListView) Then $intListViewItemsCount = _GUICtrlListView_GetItemCount($hdlListView) If @error Then ConsoleWrite("_GUICtrlListView_GetItemCount() ERR: " & @error & @CRLF) Else MsgBox(0, '', "Items count in the Control: " & $intListViewItemsCount) EndIf Else ConsoleWrite("$hdlListView is not an Handle. Error: " & @error & @CRLF) EndIf Run it and let us know Dear Francesco, _GUICtrlListView_GetItemCount() returned back with 0. But it could be called at least .. Link to comment Share on other sites More sharing options...
FrancescoDiMuro Posted September 12, 2019 Share Posted September 12, 2019 (edited) @Mitya This means that a valid handle is returned by ControlGetHandle() (and this is already something!), but _GUICtrl_ListView* functions could not be the way to solve your problem. You can try some other Control* functions, since you got the handle of the control, but if there are no "native" functions which will solve your problem, then, as already suggested above by @seadoggie01, you should go for UI Automation EDIT: In this post, the OP tried something different to interact with Grid Control; it may helps you Edited September 12, 2019 by FrancescoDiMuro Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now