Jump to content

AutoItObject UDF


ProgAndy
 Share

Recommended Posts

@trancexx @wraithdu thank You so much.

Still a couple of (probably silly) questions (sorry):

  • Does all the objects get destroyed when the script exists or must I destroy all the objects ($obj = 0) before scripts end? I mean, if I don't destroy the objects, will they stay in the memory or somesuch?
  • Same question with the _AutoItObject_Shutdown() , do I must use it before scripts end?
  • Concerning both aforementioned questions, is there a difference in behavior when running script compiled into executable and running it straight from scite with F5?
  • The destructor gets triggered when all the references to the object get destroyed in the entire script?
I had an idea, tried it out and it worked. I tried to put objects in a linked list or into an array and reference to the properties of those objects in this way:

  • linked list - $LinkedList.at($i).Property
  • array - $Array[$i].Property
I think it awesome ;)

Question: is this one of the perks of using objects? Or is it an "inappropriate" way to get the values or methods?

Edited by shEiD
Link to comment
Share on other sites

#include <AutoItObject.au3>
#include <Misc.au3>

Func __AutoItObject_Clean_ValueName($sValueName)
    If StringLen($sValueName) <> StringLen(StringStripWS($sValueName, 1+2+4+8)) Then Return SetError(1)

    Local $iValueLevel = 0, $aValueName = StringSplit($sValueName, ".", 2)
    For $sValueName In $aValueName
        $iValueLevel += 1
        If Not StringIsAlpha(StringLeft($sValueName, 1)) And StringIsAlNum(StringTrimLeft($sValueName, 1)) Then
            Return SetError(2, $iValueLevel)
        EndIf
    Next

    Return $aValueName
EndFunc

Func _AutoItObject_GetValue($oObject, $sValueName, $fForceGet = False, $fLimitValue = False)
    Local $aValueName = __AutoItObject_Clean_ValueName($sValueName)
    If @error Then Return SetError(1, 0, "")

    Local $oOldObject = $oObject, $sOldValueName = $sValueName
    Local $iValueLevel = 0, $iLimitValueLevel = UBound($aValueName)
    If $fLimitValue Then $iLimitValueLevel -= 1
    For $sValueName In $aValueName
        $iValueLevel += 1
        If $iValueLevel > $iLimitValueLevel Then ExitLoop
        Execute("Assign('oObject', $oObject." & $sValueName & ", 1)")
        If Not $fForceGet And @error Then
            Return SetError(2, $iValueLevel, "")
        ElseIf @error Then
            _AutoItObject_AddMethod($oOldObject, "__GetValue_Helper__", "__AutoItObject_GetValue_Helper")
            $oObject = $oOldObject.__GetValue_Helper__($sOldValueName, $fLimitValue)
            Local $iError = @error, $iExtended = @extended
            _AutoItObject_RemoveMember($oOldObject, "__GetValue_Helper__")
            Return SetError($iError, $iExtended, $oObject)
        EndIf
    Next

    Return $oObject
EndFunc

Func __AutoItObject_GetValue_Helper($oSelf, $sValueName, $fLimitValue = False)
    Local $oObject = _AutoItObject_GetValue($oSelf, $sValueName, False, $fLimitValue)
    Return SetError(@error, @extended, $oObject)
EndFunc

Func _AutoItObject_SetValue($oObject, $sValueName, $vValue, $iFlags = $ELSCOPE_PUBLIC)
    _AutoItObject_AddProperty($oObject, $sValueName, $iFlags, $vValue)
    Return SetError(Not @error, @error, @error = 0)
EndFunc

Func _AutoItObject_HasValue($oObject, $sValueName, $fForceGet = False)
    _AutoItObject_GetValue($oObject, $sValueName, $fForceGet)
    Return @error == 0
EndFunc

Func _AutoItObject_DelValue($oObject, $sValueName, $fForceGet = False)
    $oObject = _AutoItObject_GetValue($oObject, $sValueName, $fForceGet, True)
    If @error Then Return SetError(1, 0, False)

    Local $aValueName = __AutoItObject_Clean_ValueName($sValueName)
    _AutoItObject_RemoveMember($oObject, $aValueName[UBound($aValueName)-1])
    Return _AutoItObject_HasValue($oObject, $sValueName)
EndFunc

Func Example($oObject, $sValueName, $fForceGet = False)
    $oObject = _AutoItObject_GetValue($oObject, $sValueName, $fForceGet)
    MsgBox(_Iif(@error, 16, 64), "AutoItObject Example", StringFormat("%-32s", $oObject))
    Return $oObject
EndFunc

Func Object()
    Local $oObject = _AutoItObject_Class()
    With $oObject
        .Create()
        .AddProperty("public", $ELSCOPE_PUBLIC, "public value")
        .AddProperty("readonly", $ELSCOPE_READONLY, "readonly value")
        .AddProperty("private", $ELSCOPE_PRIVATE, "private value")
        .AddMethod("function", "Object_function")
    EndWith

    Return $oObject.Object
EndFunc

Func Object_function($oSelf)
    MsgBox(64, "AutoItObject Example on function", StringFormat("%-32s", "called!"))
EndFunc

_AutoItObject_Startup()

Dim $oObject = Object()

Example($oObject, "public")
Example($oObject, "readonly")
Example($oObject, "private")
Example($oObject, "private", True)
$oFunction = Example($oObject, "function")
$vTempResult = $oFunction()
Example($oObject, "notexist")

$oFunction = 0 ; for free
$oObject = 0

_AutoItObject_Shutdown()

XXX :

  • It's not running (for not exist property or method) if COM Error Handler installed
  • Document work

Useful :

  • Do not need COM Error Handler just access property or method
  • Can access private value on outside object(?)
Edited by GreenBox
Link to comment
Share on other sites

  • 1 month later...

A new version (v1.2.0.0) has been released. It contains many changes in the Wrapper-code and some fixes in other parts of the UDFs.

•IMPORTANT!•

Version 1.2.0.0 introduced script braking change(s):

  • Wrapped objects' methods on successful call no longer return method pointer as array[1].

    This array looks the same as with DllCall() function; array[0] is returned value by the method

    and parameters are array[1], array[2], ... (if there are any).

•Downloads:•

see first post or here.

Changelog:

----------------------------------------------------------------------
Changelog: 20.10.2010 18:27 | Version: 1.2.0.0

* implemented #5. Now non-IUnknwon-Interfaces like IXACT3SoundBank work, too. 
* added __Au3Obj_ObjStructPointer and element-pointers
* @NumParams was wrong in __Au3Obj_ObjStructPointer().
* Added example of creating custom non-IUnknown interfaces.
* Introducing "variant" type. Switching to __Au3Obj_DispCallFunc as executing function. Needs testing.
* Added Shell_Application_Wrapped.au3 as an example.
* Removed need for callback function for wrapped objects.
* Added variant byref (with examples in Shell_Application_Wrapped.au3).
* strings byref better now.
* Cleaning.
* Removed carrier variant to eliminate idiotic memory leak.
* Bringing back carrier variant. I figured out what the problem was.
* Added CleanOnInvoke method and finished idispatch as byref param option.
* Added StringToDouble, StringToFloat, StringToBool as helpers and compacted code in AutoItWrapObject.cpp.
* Added calling with no param types specified for wrapped objects.
* Restoring asterisk for byref'ed param types
* added VS 2010 project files
* SetTypes wtypes copied to swtypes.
* Strings more. Passing object type under strings would crash.
* Removed initial cleaning in SetTypes since it was based on accessing unset properties.
* fixed flaw in __Au3Obj_FunctionProxy
* Removed any mention of AutoItWrapObject::AutoItFunctionProxy.
* Added explanation on happenings for strings as ret values for methods of wrapped objects.
* Reduced required job for __Au3Obj_FunctionProxy by moving part of the code to dll.
* this->ref_count++ in Release() of AutoItObject is no longer needed.
* forcing lstrlenW to get shorter code.
* Fixed stuff around AutoItFunctionProxy in AutoItObject::Release().
* _AutoItObject_Class moved to dll.
* Removed Release() from Create method in AutoItObjectClass::Invoke. That was wrong to do.
* Added wanted property to AutoItObjectClass in order to cover releasing of the created AutoItObjects properly.
* Added checking wFlags in AutoItObjectClass::Invoke.
* Changed handling strings byref in AutoItWrapObject::Invoke.
* Added pre-cleaning in AutoItWrapElement::SetTypes.
* Separated str, wstr and bstr types completely for the wrapper since they all require different approach to work properly.
* Changed operator new for allocated memory to be initialized to 0.
* Fixed bstr*. I've made a comment on what not to do with this type (that I did and then undid and did again and undid finally).
* Added ability to change passed vars byref.
* Example is in Shell_Application_Wrapped.au3 script.
* Restoring the old state. Leaving rev175 as prototype.
* Fixed issue when large double is passed as pointer.
* Using mpress.exe v2.17 on modules to additionaly reduce the size. http://www.matcode.com/mpress.htm
* Clearing ret variant was left out with last update
* Added _AutoItObject_ObjCreate. It's calling new AutoItObjectCreateObject function. Modified ITaskbarlist.au3 to show how it works.
* Added script for generation of the help file and all that's needed for that. Updated oLinkedList.au3 with needed corrections. Rearranged AutoItObject.au3 for public functions to be alphabetically sorted.
* Adding more examples
* More examples.
* Adding PackageCreator.au3
* Preparing the new release.
* Removed Verify.txt
* Hashes for AutoItObject.au3.
* Added Home.htm
* Small change for inline dlls to satisfy nervous AVs..
* Removing unnecessary things from the folders.
* Ahh, more...
* Added data type description to both AutoItObject.au3 and help file. Alse added ScriptBrakingChanges.txt.
* Added _AutoItObject_ObjCreateEx.
* Syntax
* Adding vs2010 files to published files
* Compiled 1.2.0.0


----------------------------------------------------------------------
Changelog: 30.04.2010 23:41 | Version: 1.1.0.0

* IsBadCodePtr to check for released callbacks
* Forgot about 64bit version
* now working: turn off destructors on shutdown.
* Changed the order destructors are called. It's first in - last out now.
* Commented out IsBadCodePtr part because doesn't seem to be needed.
* Added DestructorsOrder.au3 to test for destructors order of calling.
* Fixed #3
* For some reason enum callback pointer was left out in one of the last updates. Getting it back.
* _AutoItObject_DllStructCreate() related additions
* Further simplifying AutoIt side code.
* Properly releasing.
* added a custom DispID for __name __
* name will always be the name of the last called method.
* Added _AutoItObject_DllStructCreate functions into AutoItObject.au3 for easier testings.
* Changed _AutoItObject_DllStructCreate.au3 accordingly.
* Allowing the optional parameter for _AutoItObject_DllStructCreate() to be initialized structure.
* Added example of that in _AutoItObject_DllStructCreate.au3.
* Removed array property from _AutoItObject_DllStructCreate due to that array related memory leak. Replaced by string made of element names separated by semicolon.
* "Pointer version" fixed.
* Changes in _AutoItObject_DllStructCreate.au3 followed that.
* Thousand little things I wanted to change. Nothing particularly big or worth mentioning specially, data types and stuff... No functionality is changed.
* Compiled x64 version for testing.
* Added oSystemModuleInformation.au3 as more complex example for object-structures.
* _AutoItObject_DllStructCreate() optimized further not to suffer unneeded speed performance hit.
* In x64 mode DllStruct type evaluates to 0. Tweak in _AutoItObject_DllStructCreate() due to that. 
* Unrelated action in AutoItObject.vcproj.
* New macro _RELEASE. The result is omitting initialization of tlibc. Entry point code is minimalistic.
* Reducing the size of the dlls with compiler switches.
* Removed manifest.
* Updated Resources.rc.
* Additional effort to reduce the size of the dlls. No functionality changed.
* Added InlineDLLs.au3 and committed compiled dlls
* Adding AutoIt scripts to tags/1.1.0.
* AutoItObject.au3 is with included embed dlls.


----------------------------------------------------------------------
Changelog: 19.02.2010 17:47 | Version: 1.0.0.0

* Added the current files.
* Added example of Singleton
* Temporary fix for returning pointers (return as UINT64)
* Following changes in AutoItObject.au3
* Comments and changed the internal handle in oFile to private.
* __Au3Obj_IUnknown_AddRef totally removed. Was having DEP issues on Vista.
* Changed Case 'Ptr' and Case 'Object' in __Au3Obj_VariantSet(). __copy__ was crashing for me. Try it now, should be fine.
* Added as an example of COM object wrapper for standard UDF. Wrapped function is _INetSmtpMail().
* Renamed __Au3Obj_IUnknown_AddRefAlt to __Au3Obj_IUnknown_AddRef
* Added _Object_Print and $object.__print__
* Added a script that patches au3.api in SciTe directory to add auto complete for this library.
* Sending the actual file.
* Added __execute__, please test it.
* Adding oCrypt folder. It contains AutoItObject.au3 that was built upon, oCrypt.au3 and few examples. Will add more as they are finished. It's a work in progress, some stuff is missing and some others are plain wrong.
* Added new examples and COM error handler. All examples from the help file covered.
* Fixed StringRegExp pattern in __Object_AddElement(). Was causing destructors not to be called.
* Giving full power before calling deconstructors. Function __Au3ObjI_Release() just before Call() line.
* Adding .Quit method to the main object for handling releasing. It's still not how it should be.
* Added an __error__ read-only property.
* Added first version of FAQ.txt
* Added few more Q/A.
* Fixed releasing completely.
* Reverted back
* Added:
* __Au3Object_SetMethodValue 
* __Au3Object_GetMethodValue 
* __Au3Object_RenameMember 
* __Au3Object_DeleteMember 
* __Au3Object_AddMember 
* _Object_CreateEx 
* _Object_AddPropertyEx 
* _Object_AddReadOnlyEx 
* _Object_AddMethodEx 
* _Object_DeleteMember 
* _Object_RenameMember 
* _Object_SetMethodFunction 
* _Object_GetMethodFunction
* Added my Execute() vs. __execute__ question.
* Added releasing for default error object (wasn't happening). Modified _Object_AddDeconstructor() to allow multiple destructors. First in - first out logic used.
* Example of multiple destructors on one object.
* Calling deconstructors changed to first in - last out.
* Fixed sorting descendingly for calling deconstructors
* it can do this: $oObject("call")
* __Au3Object_MemberNameToID
* _Object_OverloadCall
* Removed Ubound() function when calling deconstructor and moved DllStructSetData() out of the loop.
* Reworked the 'overloading' and called it AddDefaultMethod. I think this fits better here.
* Added: _Object_OverloadAssign
* Begun working on enums. Too stupid to return right pointer.
* Note: When changing one of these names, both shuld be changed in order to retain the relation in the names.
* Added another IUnknown to vtable
* Changed the ...Ex() file to the normal functions, and added $iPrivate options
* Just a small change for testing IEnumVARIANT. Run and see what's written to console.
* Changed .._Overload.. to .._Event..
* Added EventRelease() (Deconstructor)
* Sorry, ProgAndy, but I haven't found a way yet to add multiple deconstructors.
* Added $oDeriveFrom option to the ..Create() function.
* Fixed bug that would crash AutoIt when you passed an parent object to $oDeriveFrom
* Changed Lookup table format fir Object members. Now it is possible to modify it without invalidating old object-references.
* IEnumVariant working, but no data to enumerate yet.
* Fixed missing AddRef in __Au3bjUI_Invoke for _NewEnum
* Enum works!! Example included.
* Optimized enum
* Slightly faster __enum__ lookup.
* Moved more ENUM-handling out of the global object. (Example needs 4 seconds for me now)
* Linked List which uses the new enum code!
* Added some more formatting for __print__
* Sorting lookup-table when adding members (renaming still has to be modified)
* Added initial COM Wrapper for the AutoItObject.au3.
* Commented out the last example
* Added DirectX.au3 as an example of porting different object interfaces to IDispatch.
* Added more object related stuff
* Cleaned a sintax a bit in DirectX example with few comments and added $__Au3Obj_X64 global constant in AutoItObject.au3.
* _DllObjectCreate() working!
* Few optimization in DirectX.au3 with added comments.
* Changed DirectX.au3 to use __Au3Obj_MemoryCall() function.
* Cleaned __Au3Obj_MemoryCall a bit and added _Bitor0() function.
* Number-ized pointers.
* Added #Region Object porting
* Following changes in AutoItObject.au3.
* Deleting trunk...
* Finally moving branch into trunk.
* documented the UDF-functions
* added license headers
* direct accesss to 2D array-properties now available (Ubound is returned with (-1,1) for first dimension, (-1,2) for 2nd dimension)
* untested fix for __bridge__ on x64 implemented
* Updated AutoItObject_X64.dll
* some more documentation work. Heading to release 1.0.0
* fixed inital value for _AutoItObject_AddProperty
* enabled calling of functions like properties (first param can be assigned with = )
* Added my real name
* Added support for both "$obj()" and "$obj() = ..."
* Added some functions.
* Fixed issue: #1 (fatal error on non-existing AutoIt-Function)
* Altered default-function/property implementation
* Added TicTacToe example :)
* Err, now adding
* added __propcall__ to determine whether a function is called as put or get
* Added destructor support.
* Also changed to _AutoItObject_Shutdown just clears interface pointers - not frees dll.
* Added examples
* Added COM wrapper and renamed some functions. Added ptr/idispatch conversation functions to public exported.
* added oMsgBox example (uses COM wrapper for AutoItObject).
* Cosmetics...
* declared variant-functions as public.
* renamed _ClassAutoItObject To _AutoItObject_Class to fit naming convention
* Corrected two little mistakes as a result of copy/paste.
* added missing VariantInit.
* Compiled v1.0.0.0.
* prepare for initial release 1.0.0.0


Generated with Subversion Changelog Generator 0.2.1.28267
Copyright © CharlieFirpo 2009 <Firpo.Charlie@googlemail.com>
Edited by ProgAndy

*GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes

Link to comment
Share on other sites

You people are just amazing. This library is so great that I pray

for this project to be built-in into AutoIt, in some way.

Code performance is quadrupled, literally. I guess it'll take some

time until we see libraries exposing user-objects-only while hiding

all the nasty procedural code, but these are the first steps toward.

Keep up this good work.

Link to comment
Share on other sites

Thank you Authenticity in behalf of all involved.

It's really special feeling to see people using something that you created, or helped to be created. Special I tell you.

I guess one thing what AutoItObject shows as the most obvious thing is that there are no real boundaries, only those that people create in their heads.

edit: and that my English is so... so

Edited by trancexx

♡♡♡

.

eMyvnE

Link to comment
Share on other sites

  • 1 month later...

I get this error when trying to set a property to a window handle:

! COM Error ! Number: 0x00000005 ScriptLine: 36 - Conversion of parameters failed

The statement in error is: $oSelf.Handle = WinGetHandle("[CLASS:Notepad]", "")

Here is my code.

#include "..\AutoitObject.au3"
Opt("MustDeclareVars", 1)

; Error monitoring
Global $oError = ObjEvent("AutoIt.Error", "_ErrFunc")

; Initialize AutoItObject
_AutoItObject_StartUp()

; Create Object
Global $oObject = _Notepad()

;Run notepad
$oObject.Open()

; Release
$oObject = 0 ; <-!Comment this out to see the new behavior!


; Define object
Func _Notepad()
    Local $oClassObject = _AutoItObject_Class()
    $oClassObject.Create()
    $oClassObject.AddProperty("Handle", $ELSCOPE_PUBLIC)
    $oClassObject.AddMethod("Open", "_Notepad_Open")
    $oClassObject.AddDestructor("_Notepad_Destructor")
    Return $oClassObject.Object
EndFunc   ;==>_Notepad


Func _Notepad_Open($oSelf)
    Run("notepad.exe")
    $oSelf.Handle = WinGetHandle("[CLASS:Notepad]", "")  ;<<<======= line in error
EndFunc   ;==>_Obj_MsgBox

Func _Notepad_Destructor($oSelf)
    ConsoleWrite("!...destructing..." & @CRLF)
EndFunc

Func _ErrFunc()
    ConsoleWrite("! COM Error !  Number: 0x" & Hex($oError.number, 8) & "   ScriptLine: " & $oError.scriptline & " - " & $oError.windescription & @CRLF)
    Return
EndFunc   ;==>_ErrFunc

Let me know were I'm wrong.

Thank in advance.

Link to comment
Share on other sites

Do it like this:

$oSelf.Handle = Number(WinGetHandle("[CLASS:Notepad]", ""))

AutoIt can't understand VT_PTR variants with objects. Seems it tries to find the meaning for it.

This is (reported) bug in AutoIt.

Thank you, now the problem is in reusing the handle after is converted into a number.

The following does not work:

Func _Notepad_Close($oSelf)

WinClose($oSelf.Handle)

EndFunc

#include "..\AutoitObject.au3"
Opt("MustDeclareVars", 1)

; Error monitoring
Global $oError = ObjEvent("AutoIt.Error", "_ErrFunc")

; Initialize AutoItObject
_AutoItObject_StartUp()

; Create Object
Global $oObject = _Notepad()

;Run notepad
$oObject.Open()
$oObject.Close()

; Release
$oObject = 0 ; <-!Comment this out to see the new behavior!


; Define object
Func _Notepad()
    Local $oClassObject = _AutoItObject_Class()
    $oClassObject.Create()
    $oClassObject.AddProperty("Handle", $ELSCOPE_PUBLIC)
    $oClassObject.AddMethod("Open", "_Notepad_Open")
    $oClassObject.AddMethod("Close", "_Notepad_Close")
    $oClassObject.AddDestructor("_Notepad_Destructor")
    Return $oClassObject.Object
EndFunc   ;==>_Notepad


Func _Notepad_Open($oSelf)
    Run("notepad.exe")
    $oSelf.Handle = Number(WinGetHandle("[CLASS:Notepad]", ""))
EndFunc

Func _Notepad_Close($oSelf)
    WinClose($oSelf.Handle) ; <<<<<<<<<<<<<<<< don't work >>>>>>>>>>>>>>>>
EndFunc

Func _Notepad_Destructor($oSelf)
    ConsoleWrite("!...destructing..." & @CRLF)
EndFunc

Func _ErrFunc()
    ConsoleWrite("! COM Error !  Number: 0x" & Hex($oError.number, 8) & "   ScriptLine: " & $oError.scriptline & " - " & $oError.windescription & @CRLF)
    Return
EndFunc   ;==>_ErrFunc
Link to comment
Share on other sites

Yes.

But AutoIt is again wrong. It shouldn't care for the type of variable.

The problem is, that WinClose accepts both, a window title (string) or a handle. So AutoIt has to choose one method and this just defaults to string if no handle is given.

*GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes

Link to comment
Share on other sites

I know some about OOP.

More examples are better, examples is better than a lot of words.

Although, there is a lot of unclear command in documents.

For example I could nit use,

_AutoItObject_Create([$oParent = 0] )

I do not know how to pass the Parent. It maybe simple to you, but not for me.

Here is some example, hope to be useful for other users 

Examples.rar

Edited by aymhenry
Link to comment
Share on other sites

Version 1.2.2.0. is released.

Why would you want to update?

Besides different improvements (read fixes) you can find some new features. For example you can create, so called, Dll-objects. Dll-object is extremely light object (IDispatch) with methods in names of exported functions of the loaded dll.

Desired dll is loaded and object created by a call to _AutoItObject_DllOpen() function. For more informations and examples consult the help file.

In some (near) future these objects will be able to accept structure as parameter (AutoIt's missing feature) if the end of the world wouldn't happen in the mean time, or some other miracle like the continuation of development of AutoIt3.

What else? If you check Interfaces folder you will see that it's richer for few new definition. These are written by Autheticity and are related to Direct3D. This means that Direct3D is now on your palm if you want to work with it.

A word or two about _AutoItObject_ObjCreate and _AutoItObject_ObjCreateEx functions. These two functions largely extend AutoIt's capabilities in COM object creation area. Objects from COM dlls are, by using these functions, accessible in some new and more advanced ways. For example COM server doesn't have to be registered on the system for you to be able to use objects within. Registration would normally require elevation (Vista and above with UAC). Not any more. Everything is done internally and nothing requires any kind of elevation whatsoever.

Links are in the first post and this is that would lead you there. This is not.

Don't forget ScriptBreakingChanges.txt even though it's very unlikely you would be stumbling there.

Team thanks Authenticity and ptrex for their share.

Edited by trancexx

♡♡♡

.

eMyvnE

Link to comment
Share on other sites

I've been testing DirectShow.au3 from folder Example.

It has strange behaviour with some video files.

Sometimes control "VideoRenderer" instance 1 is hide after Load click.

But it is showing when window has resized manually.

So it seems this two-lines addition (after $oMediaControl.Run()) could fix this "bug":

$oMediaControl.Run()

;Instead of resizing manually!
$SZ = WinGetPos("DirectShow Player - AutoItObject", "")
WinMove ("DirectShow Player - AutoItObject", "", $SZ[0]+1, $SZ[1], $SZ[2], $SZ[3])

The point of world view

Link to comment
Share on other sites

I just want to thx the team of this project.

Since this, i can release soon my VMWARE UDF ( too ugly for now ), and it is turned in object oriented ways. It so

simplier for future coders to understand those $AutoITObjXMLHTTPS.SetRequestString("something") instead

of calling so much function for the same thing.

For those who ask (if there is any ), it is really fast, and transparent. So no one can tell that I use the AutoItObject behind my functions.

... some other miracle like the continuation of development of AutoIt3.

arf... i'm afraid of it. Hope this will not happen :/

-- Arck System _ Soon -- Ideas make everything

"La critique est facile, l'art est difficile"

Projects :

[list] [*]Au3Service : Run your exe as service V3 / Updated 29/07/2013 Get it Here [/list]
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...