redrider81 Posted January 11, 2015 Share Posted January 11, 2015 Is there any programmatic way to return a string or array showing all the property names of an AutoIt object when you do not know their names, or how many there are? Based on what I've read so far, I believe the concept is called "Type Introspection" and is only available in some advanced languages. Sources: http://stackoverflow.com/questions/14305750/list-object-methods-and-properties http://en.wikipedia.org/wiki/Type_introspection Thanks in advance. Link to comment Share on other sites More sharing options...
JohnOne Posted January 11, 2015 Share Posted January 11, 2015 I don't believe there is, at least in AutoIt. One generally looks at a scriptable objects documentation, for information on its properties and methods. AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
guinness Posted January 12, 2015 Share Posted January 12, 2015 I was about to write the same as JohnOne. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
junkew Posted January 12, 2015 Share Posted January 12, 2015 depending on what you mean you can do what you want with those wonderfull references Whats your definition of an autoit object? COM/ActiveX component or a real AutoIT object as coming from AutoITObject package? FAQ 31 How to click some elements, FAQ 40 Test automation with AutoIt, Multithreading CLR .NET Powershell CMDLets Link to comment Share on other sites More sharing options...
redrider81 Posted January 13, 2015 Author Share Posted January 13, 2015 Thanks for the fast replies! I'm dealing with objects as created by ozmike's amazing json UDF: '?do=embed' frameborder='0' data-embedContent>> I asked ozmike the question specifically regarding objects created by his UDF, but I posted the question here for a more broad discussion because it did seem like it would depend on nature of the object, and I've been learning more about working with objects lately. Interestingly, he posted a method for achieving the goal, but I did not have time to test, as I had already implemented a workaround based on string manipulation. I get the feeling his method only works for those JSON objects, but probably would not work unless specifically programmed into other UDFs. For the curious, the reason we won't know the property names is that we're working with a web API that returns everything as JSON data. This includes lists of users, servers, and groups. Each of these supports arbitrary properties on the objects. Unless anyone else happens to have found a way in the past, I will conclude the general answer is no for most objects such as COM/ActiveX, and AutoIT Objects. Regards, Jerry Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted January 13, 2015 Moderators Share Posted January 13, 2015 Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
redrider81 Posted January 13, 2015 Author Share Posted January 13, 2015 Thanks for the reply SmOke_N , but unfortunately I am not sure this addresses the use case (or maybe I'm just not understanding it). I think this requires a definitions file, a viewer, and a manual process. All the properties of my object will be un-knowable until runtime, at which point they could literally have any arbitrary name. I guess one of the fundamental challenges is that I am working with objects that do not have static definitions. Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted January 13, 2015 Moderators Share Posted January 13, 2015 (edited) I thought about breaking it down to get that information. But to be honest, it will take some time and I don't have a need for it at the moment. 1. Create the object. (ObjectCreate) 2. Find the exe/ocx/dll/tlib that is defining the object (ObjName(Object, 4)) 3. Use that string path to load the data (_TLB_GetTYPELIBS(ObjeNamePath)) 4. From here you'd have to dissect how trancexx got the function names from within _TLB_GETTYPELIBS, (follow the code) So as an example (this will be 2 parts instead of 1 because I've not dissected the code myself). 1. Open an IE browser object: #include <IE.au3> Global $goObj = _IECreate("http://google.com/") _IELoadWait($goObj) Global $gszObjPath = ObjName($goObj, 4) ConsoleWrite("When you run trancexx's GUI code, navigate to the below path:" & @CRLF & $gszObjPath & @CRLF) 2. Now run >Trancexx's TYPELib code and navigate to the path that the ConsoleWrite() displayed. Edited January 13, 2015 by SmOke_N Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
JohnOne Posted January 17, 2015 Share Posted January 17, 2015 Since this is a relatively recent thread, I'm going to afford it a bump with a relevant link. '?do=embed' frameborder='0' data-embedContent>> AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
water Posted January 17, 2015 Share Posted January 17, 2015 I was just going to post the same - but I'm too late My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki 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