Jump to content

AutoItX Future


Jon
 Share

Recommended Posts

  • 3 weeks later...

I am very happy to see some development going on with AutoItX. Personally I try to use WSH functionality whenever possible. My main focus is on enhancing workflow and IPC scripting, less on administration and, naturally, I try to do automation tasks by application-internal COM whenever possible. I am in the process of creating a desktop function library based on WSH (using Python and JScript) and I am happy about any library, that makes my life easier. Just for the background.

I re-visited the AutoItX docs to find some function, that would allow me to read out the current desktop's screen-resolution, since I did not find one in the WSH object reference and it fealt to me, that this may be something AutoIt is capable of. I am still relativley new to AutoIt3. I found some macros in the main documentation:

@DesktopHeight  Height of the desktop screen in pixels.  (vertical resolution)
@DesktopWidth   Width of the desktop screen in pixels.  (horizontal resolution)

So, one thing, that I'd find interesting to see in a future version are the macros/constants of AutoIt3.

I am not yet sure, whether I can do this with AutoIt3, but if there is a possibility to change the screen resolution programmatically with it, that would be nice to have in AutoItX, too (I want to change reso for a certain user, who uses my computer with her own account, upon login and change it back upon logout (or place some script onto the desktop to invoke)).

Of course, I am aware, that a lot of functionality, AutoIt3 offers is being offered by different system and 3rd party COM objects and therefore not needed in AutoItX.

Nice introduction on COM in the main docs, btw.

Link to comment
Share on other sites

Hi Amix - I use WSH too - I enjoy using javascript as a scripting language (although it does lack metahooks for metaprogramming - but that is slated to be added in the next major revision and a clean macro system is being considered at some point) - with microsoft actively participating in the next minor revision of JS to be included with IE8 - that is WSH will be receiving a very cool jscript upgrade: 5.8) - i find jscript to be far more expressive than vbscript (i started learning them both at the same time - did a couple projects in both - and then settled with jscript because i found myself fighting with the language a lot less).

My domain is healthcare - and the solutions I come up with usually involve IPC too - i.e processing and merging data stored in excel and access - along with manipulating our patient information systems (some interface over citrix) to automate information extraction from the frontend - when backend access is forbidden.

The COM AutoIt dll has allowed me to accomplish many things - and I have created some JS abstractions that allow me to write code such as this:

var win = AutoItWrapper.getWindow("epic");

win.minimize();

var textbox = win.getControl(PATIENT_NUMBER_TEXTBOX_ID);

textbox.send("1234567");

(If someone is interested in this code or thinks the libraries might be worthwhile for WSH let me know and we can figure out the best way to share it with the community in an open source fashion)

Lately I have wanted the ability to install hooks into applications - this would allow some pretty cool automation - adding mouse hooks, keyboard hooks, message hooks, CBT hooks. AutoItCom does not provide such a capability. There does not seem to be much interest in one either. The autoit scripters can install systemwide (global) hooks - but these are expensive - and takes you away from using jscript/WSH.

I have recently coded a COM component in C++ using the incredible boost interprocess and threading library & microsoft's ATL that allows one to install any form of hook, supply a callback function which then receives all the relevant information in the form of a jsript object. It is one com dll - no separate dlls - and allows thread-specific and global hooks. The nice thing about this solution is that for all instances of the COM component that are instantiated (across processes even) - only one hook per window (or global) is installed - and there is only 1 dll which gets injected into each process. And technically all 15 hooks are available for hooking. So it is as performant and permissible as hooks of this nature can be.

Thus you can now write code as such:

win.addHook("WH_MOUSE", function(evt) { if (evt.x > 40) print("you double clicked - and x coord > 40"); }, "WM_MOUSEDBLCLICK");

// block a window from being created - this is slow since each hook has to wait for a response from our script which is quite expensive for a hook to do.

// but then performance is not king in the world of scripting - possibility of gluing a solution together is king

win.addHook("WH_CBT", function(evt) { if (getTitle(evt.hwnd) == "Patient SSN") return true; ); }, "WH_CREATEWND", { synchronize_response: true } );

Anyways - I would like to see this functionality in AutoIt Com too and would be willing to work with the developers of autoit to incorporate it into the dll if there is interest. I also think we shoudl be allowed to create context menus (windows/other controls) anywhere on the screen in response to certain events we are listening for - this is also not difficult to add to AutoItCom. Once again, if none of the other developers have time, I would be willing to add this functionality in if there is interest and the owner of AutoIt would be amenable to such a proposition.

You do mention that a lot of functionality in autoit is available in 3rd party com objects - do you have a list of these - i would be interested in checking them out too?

regards,

Faisal Vali

Radiation Oncology

Loyola

Link to comment
Share on other sites

  • 4 months later...

Hello, I use AutoIt and AutoItX for a long time, and I've registered only because I saw this topic.

It will be very nice if we can have some function like "Execute" (like first reply said). In this way, I can crypt my script in executable, then I decrypt and call DLL to execute it, instead to convert/import all functions into my executable and execute one-by-one. (It will eliminate data types mismatch too, like ANSI and UNICODE).

It will be nice too if you remove the CRC check for the DLL, so then I can pack and crypt the DLL too, now I do a work around (I crack the DLL to not check the CRC).

There are any topic realet to AutoIt suggestions? I have some to the "executable" version too.

Thank you in advance

Link to comment
Share on other sites

  • 1 month later...

I really would like to see the GUI Functions because the main reason that I am using AutoItX is to extend the use of

Game Maker (It can be found here). It allows the use of dlls

and it does NOT have built in GUI functions. I would also like to see all of the other AutoIt 3 functions put into the

dll. Thank you for such a great tool to program with Jon.

Link to comment
Share on other sites

The problem with trying to add GUI functions to the dll is that it would require a message loop of some sort. Not only to read for messages, but also to let the calling program know a message came in. That is doable but not portable. There are clients that would not be able to use things like function callbacks or control handles.

Link to comment
Share on other sites

How about support for multiple monitors in the Macros, for example it seems like @DesktopWidth returns the width of montior #1 but how can I find the width of monitor #2?

In short, I'd like to be able to detect if multiple monitors are being used and find the resolution of each.

Link to comment
Share on other sites

  • 1 month later...

In the latest beta version I've changed everything to full unicode. For COM this won't mean any difference to anyone. For the exported DLL version all the string parameters have changed to LPWSTR rather than char. This will cause some issues.

In theory, I could create ANSI versions of every function that converts ansi/unicode on the fly but it's quite a lot of work and I'm not sure it's worth it.

I have updated the Delphi wrapper for the AutoITX DLL to handle the new LPWSTR of 3.3.

http://www.autoitscript.com/forum/index.php?showtopic=54219

----------------------------------------------------------------------------------------Melloware Inchttp://www.melloware.comHome of Intelliremote, take back control of your HTPC!www.intelliremote.com-----------------------------------------------------------------------------------------

Link to comment
Share on other sites

  • 3 months later...

Based on what I have seen so far, I'm not certain this is even possible. But if it is...

I'd like very much to have a method for sending keystrokes to an inactive window, i.e. a window that does not have focus. Similar to a hybrid of Send and ControlSend, that doesn't need the destination window to be active and doesn't need a specific control to send the keys to.

Thanks,

Kevin M.

Link to comment
Share on other sites

  • 1 year later...

I saw this beggar on the side of the road today. He was holding a sign saying, "Need a WinList method". It looked like he had been standing out there for awhile; his hands were all gnarled and arthritic from writing all those EnumWindows callbacks. Poor guy. I threw him my two cents.

Edited by Jos
removed links
Link to comment
Share on other sites

  • 1 month later...

I would to call the AutoItX3.dll file from batch file, below

is my thread.

The feedback is I need a wrapper for AutoItX3.dll to enable me to use it in batch file. :(

Since this is the thread regarding AutoItX3.dll future, can I request a wrapper for AutoItX3.dll

to enable me to use it in batch files? Thanks alot. :graduated:

Edited by CyberMax
Link to comment
Share on other sites

  • 6 months later...

Hi all,

I'm new to AutoIt. I'm working on a middle tier helper between windows and web app project. I've spent 4 days reading and trying out whether it suits the job. So far, it is ! The only urgent need for AutoItX and AutoIt is the inter-process communication. By reading the AutoItX help file (v3.3.6.1) I know the ClipGet/ClipPut and the iniRead/iniWrite/iniDelete, they can be used to act as buffers of an inter-process communication but with a lot of trouble at slow speed. The has show me what AutoIt is capable to on this issue which inspire me of many possibilities not found in other languages.

inter-process communication is a MUST HAVE feature for AutoItX.

If we're going to have inter-process communication, needs of unicode<->ANSI functions are obvious.

The transformation of string<->array, string<->num or even string<->object with structural string like XML and JSON is quite common in many languages. The last are quite cover in AutoIt. Most of the thing can be done there.

AutoIt aims to automate tasks. If it's so, the proper interface to the target application/flamwork or platform is a MUST. Hacks to target UI or behavior is the last resort as it won't last long till the UI or behavior of an application change in this super-high competitive industry. I've seen many useful UDF like IE, Excel, Word, FF etc all of which cover their standard interfaces. The can communicate locally in the same computer but when you aims for globalization, cloud or grid computing, how to without AutoItX inter-process communication. We have all the tools but lag of just a middle chain.

Maybe I'm too new to AutoIt and AutoItX. If I have been suggesting stupid requests which have already been supported or there are already solutions, please, advise.

Regards

Prakob

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...