Jump to content


AutoItX Future

  • Please log in to reply
33 replies to this topic

#21 Richard Robertson

Richard Robertson


  • Active Members
  • PipPipPipPipPipPip
  • 10,335 posts

Posted 29 August 2008 - 10:51 PM

The problem is that the WinList function returns an array and marshaling arrays between languages is messy.

#22 amix



  • New Members
  • 1 posts

Posted 17 September 2008 - 12:41 AM

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.

#23 faisalv



  • New Members
  • 4 posts

Posted 17 September 2008 - 03:46 PM

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");
var textbox = win.getControl(PATIENT_NUMBER_TEXTBOX_ID);

(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?

Faisal Vali
Radiation Oncology

#24 Dablio



  • Active Members
  • 5 posts

Posted 15 February 2009 - 05:58 PM

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

#25 accelleon



  • New Members
  • 1 posts

Posted 31 March 2009 - 08:19 PM

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.

#26 Richard Robertson

Richard Robertson


  • Active Members
  • PipPipPipPipPipPip
  • 10,335 posts

Posted 31 March 2009 - 09:28 PM

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.

#27 87yj



  • Active Members
  • 8 posts

Posted 05 April 2009 - 09:47 PM

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.

#28 Richard Robertson

Richard Robertson


  • Active Members
  • PipPipPipPipPipPip
  • 10,335 posts

Posted 06 April 2009 - 02:58 AM

That has nothing to do with AutoItX.

#29 Melloware



  • Active Members
  • 21 posts

Posted 15 May 2009 - 10:24 PM

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.

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

#30 kamyers1



  • Active Members
  • 42 posts

Posted 09 September 2009 - 12:14 AM

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.

Kevin M.

#31 Deepanshu



  • New Members
  • 3 posts

Posted 16 October 2010 - 05:31 AM

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, 16 October 2010 - 08:11 AM.
removed links

#32 CyberMax



  • Active Members
  • 29 posts

Posted 21 November 2010 - 03:42 PM

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, 21 November 2010 - 03:43 PM.

#33 prakob



  • Active Members
  • 17 posts

Posted 12 June 2011 - 05:08 PM

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


#34 Richard Robertson

Richard Robertson


  • Active Members
  • PipPipPipPipPipPip
  • 10,335 posts

Posted 12 June 2011 - 08:41 PM

IPC doesn't belong in AutoItX because AutoIt is for automation.

Use your language's IPC systems (they exist, you're just being lazy).

Edited by Richard Robertson, 12 June 2011 - 08:41 PM.

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users