brokenchains Posted September 5, 2015 Share Posted September 5, 2015 I'm trying to automate a chunk of what I do as a hobby with OBS Multiplatform, a livestreaming app. The original OBS program worked with a script in AutoHotkey, but doesn't in the newer rewrite of the app. Basically while the app is not in focus I need to double click an item in a list, just click 'OK' or hit enter or space, then send the same hotkey to OBS that goes through AutoIt. I got the double click to work just fine which was the problem with AHK, but I'm struggling to click 'OK'. I think the real issue is that this new multiplatform version of OBS has really funky naming for its classes & controls. They seem generic - for example the main window has the class "Qt5QWindowIcon". Anyway this is my first night looking into AutoIt but from what I've cobbled together after looking through the docs and picking up scraps, I have worked up the code below. (I know I commented the ControlSend & ControlClick, that's just to point out the two options I've tried.)Local $inTargetProg = False Func _num2() ControlClick("OBS 0.11.4 (windows)","","[CLASS:Qt5QWindowIcon; INSTANCE:4]","",2,224,35) WinWait("[TITLE:Properties for 'CC_Transition'") ;ControlSend("Properties for 'CC_Transition'","","[CLASS:Qt5QWindowIcon; INSTANCE:2]","","{enter}") ;ControlClick("Properties for 'CC_Transition'","","[CLASS:Qt5QWindowIcon; INSTANCE:2]","",1,28,10) EndFunc While 1 If WinExists("OBS 0.11.4 (windows)") and Not $inTargetProg Then HotKeySet("^{NUMPAD2}","_num2") $inWC3 = True EndIf If Not WinExists("OBS 0.11.4 (windows)") and $inTargetProg Then HotKeySet("^{NUMPAD2}") $inWC3 = False EndIf Sleep(5) WEndBelow is the Window Info while I hovered exactly in the center of the button I need to click. I though just sending {enter} with the ControlSend option above would do it easily but it didn't.expandcollapse popup>>>> Window <<<< Title: Properties for 'CC_Transition' Class: Qt5QWindowIcon Position: 29, 272 Size: 989, 700 Style: 0x96CC0000 ExStyle: 0x00000500 Handle: 0x004E0074 >>>> Control <<<< Class: Qt5QWindowIcon Instance: 2 ClassnameNN: Qt5QWindowIcon2 Name: Advanced (Class): [CLASS:Qt5QWindowIcon; INSTANCE:2] ID: Text: buttonBoxWindow Position: 830, 629 Size: 132, 21 ControlClick Coords: 30, 12 Style: 0x56000000 ExStyle: 0x00000000 Handle: 0x002C04CC >>>> Mouse <<<< Position: 860, 641 Cursor ID: 0 Color: 0x8E6A65 >>>> StatusBar <<<< >>>> ToolsBar <<<< >>>> Visible Text <<<< OBSPropertiesViewClassWindow buttonBoxWindow OBSQTDisplayClassWindow >>>> Hidden Text <<<<Any suggestions? If I missed anything I'd be glad to provide it if I can. DerPensionist 1 Link to comment Share on other sites More sharing options...
computergroove Posted September 6, 2015 Share Posted September 6, 2015 Use an if statement with winactive - https://www.autoitscript.com/autoit3/docs/functions/WinActive.htm Get Scite to add a popup when you use a 3rd party UDF -> http://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3/user-calltip-manager.html Link to comment Share on other sites More sharing options...
brokenchains Posted September 6, 2015 Author Share Posted September 6, 2015 Even if I want to control the app from the background? WinActive just looks to see if it's the window in the foreground, right? Link to comment Share on other sites More sharing options...
computergroove Posted September 6, 2015 Share Posted September 6, 2015 I gave you the function reference link in my post. You can see if the window is active or not then perform an action if it's active or not. You have what you need. Get Scite to add a popup when you use a 3rd party UDF -> http://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3/user-calltip-manager.html 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