bigdog05 Posted February 1, 2007 Share Posted February 1, 2007 (edited) My problem is as such: I have an app that is written completely in Java using Swing. By now I have figured out that because Swing doesn't use standard Windows widgets and instead paints its own onto the canvas I can't directly manipulate Swing controls using the ControlSend(), thus not being able to identify a ControlID/Classname etc using the AutoIt Window Info Tool. I have now resorted to simply sending TABS to select the appropriate controls (input box, drop down menu) in the App to position focus on the desired control and then sending keystrokes using the Send(), which works fine as long as the Window is active. My question is can I continue to follow this same TAB approach with the Window inactive? And if so, how?. e.g. using something like ControlSend(title,"","","some text"). Thanks in advance. bigdog05 Edited February 1, 2007 by bigdog05 Link to comment Share on other sites More sharing options...
ethnarch Posted February 1, 2007 Share Posted February 1, 2007 (edited) I am not that familiar with autoit, but why don't you just try ControlSend and see what it does. Another option you might want to consider is that i believe java can accept inputStreams from different from various methods such as tcp so maybe you can send data to your application via autoit's tcp udf. And then have the application respond. I would suggest opening another thread for this. I mean thread as in a multithreaded application hehe not another forum thread. Edited February 1, 2007 by ethnarch Link to comment Share on other sites More sharing options...
bigdog05 Posted February 1, 2007 Author Share Posted February 1, 2007 (edited) I am not that familiar with autoit, but why don't you just try ControlSend and see what it does. Another option you might want to consider is that i believe java can accept inputStreams from different from various methods such as tcp so maybe you can send data to your application via autoit's tcp udf. And then have the application respond. I would suggest opening another thread for this. I mean thread as in a multithreaded application hehe not another forum thread.I have tried the ControlSend method I mentioned in my previous post with no success. Just to clairify the Java App is not my own app which I have the source code for, it is just an App installed on my machine, so as of now I'm just treating it as a blackbox. So the only thing I could make multithreaded would be another program I write to send tcp messages from. Edited February 1, 2007 by bigdog05 Link to comment Share on other sites More sharing options...
someone Posted February 1, 2007 Share Posted February 1, 2007 (edited) I unfortunately do not know the answer but before you chase your tail around autoit doesn't do multithread. I believe its on the not to do list. That being said, post a screenshot of the java window, let people know the name of the app, and they might be able to give you a better answer. I don't know (but would assume) that you could use WinActivate though to give focus to the application and continue to use keystrokes like you have been. Sorry I couldn't be of more help!EDIT: if your interested heres the things not on the to do list...http://www.autoitscript.com/forum/index.php?showtopic=33373 Edited February 1, 2007 by someone While ProcessExists('Andrews bad day.exe') BlockInput(1) SoundPlay('Music.wav') SoundSetWaveVolume('Louder') WEnd Link to comment Share on other sites More sharing options...
bigdog05 Posted February 1, 2007 Author Share Posted February 1, 2007 Unfortunately, I can not post a screenshot of the App nor is it an App anybody would be familiar with. The App is a custom govt. App written as a Java Swing Application using your customary JFrame. Currently, I'm using WinActivate to force the window to activate the problem arises when the user decides to click on a different screen in the middle of sending keystrokes, thus causing the keystrokes to be lost, this is the reason I would like to nullify the user intervention causing an error. Link to comment Share on other sites More sharing options...
ethnarch Posted February 1, 2007 Share Posted February 1, 2007 you can use autoit to block all user input use thisBlockInput ( flag )I unfortunately do not know the answer but before you chase your tail around autoit doesn't do multithread.for the record i didn't say to use multithreading in autoit i said in java! I wouldn't give someone bad information like that Link to comment Share on other sites More sharing options...
ethnarch Posted February 1, 2007 Share Posted February 1, 2007 If you do block input just be very sure that one way or another you reverse the changes otherwise it will render your computer useless. Make sure there is some kind of timeout or error checking to prevent this. Link to comment Share on other sites More sharing options...
bigdog05 Posted February 2, 2007 Author Share Posted February 2, 2007 Thanks for the help guys I guess at this point the best thing I could do is disallow user input during the sending of keystrokes to my App, although if anyone else knows of a way to send keystrokes to an inactive Java Swing window without specifying a control let me know, it would be highly appreciated. Bigdog05 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