ScriptOMatic w/ArraySupport 0.2015.11.28

   (0 reviews)

argumentum

1 Screenshot

About This File

generates a function that returns all results as an array from the WMI query.

2015.11.28
added a StatusBar. ( was not easy to resize in win10 )
fixed COM handler in generated code

2015.06.11
added a "nice" COM error handler ( in Autoit v3.2 if there is a COM error it'll tell you and no more run,
  in v3.3 it will let it slide but you don't realize there was one. So I put together a COM error handler
  that will gather all the errors and show'em to you in an array displayed by _ArrayDisplay. It includes
  the line number and the line of code it self. nice. )
added the Scite lexer. ( There are code generated that is over 6000 lines long and that is a bit too much for
  the edit control, so, I decided that since is gonna run in a PC that most likely is to have ScITE, using
  the DLL just makes sense. Everything that is needed is taken from your installation, colors, fonts, etc.
  In case that ScITE is not there, then, the edit control would be used. )

2015.06.08
changed the CIMv2 button to switch between CIMv2 and WMI. ( is a more practical use of the button )
added some support for remote connections. ( executes remotely based in the classes discovered in local PC )
added Save to Disk for the filter by right-click the button. ( is anoying having to set it every time )
fix CPU usage was higher than needed in the main loop. ( ..less abuse on the PC )
added the position in the array to the "select properties". ( when an error pops up, the position is there,
 making it easier to find it in the listview )

2015.05.25
fixed "Send to ScITE" ( wasn't working well )
added the ability to remove fields/properties from the generated arrays

2015.05.16
fixed the combobox not working everywhere.
added setting to, in addition to Dynamic Classes, to include Abstract Classes.
added a filter ( easyer to look for what you need ).

2015.05.15
added custom default setting for display array limit.
added custom GoogleIt search ( @SelectedClass is the macro word ).
added cache for the Class too ( since is much faster and there is no
 need to discover every time it runs ).
change cache from an entry in the ini to a file of its own and
 created a subfolder for them when in portable mode ( cleaner that way ).
changed the function generation to not have to pass an integer.
changed function names when longer than 60 characters
 ( Au3Check don't like infinitely long names ).
changed how F5 works. Now F5 runs and ESC stops.
changed code generation from "$Output = $Output &" to $sReturn &=".
added \root\namespace:class to the title bar.
added a class description above the list of methods ( it just makes sense ).
change the default spacing of Array_Join() ( to better identify it was joined ).
added a watcher for "Autoit error", to move it to the current screen ( ANSI version ).
fixed "Send To ScITE" incomplete send ( it was too much at once ).
added to "Send To ScITE" the option to send to a new tab or cursor position.
added to the ini, Editor='@ScriptDir & "\..\..\SciTE\SciTE.exe"' , to use in a portable
 setup, it will normally use ShellExecute(,,,"Edit")
added the settings of the editor to the settings GUI.
added a button to move the settings and cache from @AppDataDir to @ScriptDir
 ( to carry your settings and cache as portable ) and back again, if so you want to.
added a ScITE "installer", to add this app. to the tools menu.

2015.05.12
fixed the way it returns a value when it, is an array.
changed the Google it string ( added "example" ).
added for all Properties and Methods with a ValueMap,
 functions to return value ( descriptions ).
added cache of namespaces to the ini file ( it was annoyingly slow ).
added full help. ( well, a list of all class, property and method Qualifiers ),
 to be found at the end of the code.

2015.05.11
added refresh after closing the settings GUI to make 
 the changes reflect in the code already in the editbox

2015.05.10
added preferred monitor to display _ArrayDisplay on
 the ANSI compile
changed internal works for Topmost and Multi-monitor
 so the code shown in the editbox is always clean
 of extraneous variables to both compiles.

2015.05.09  ( ANSI compile only )
added multi-monitor support to the ANSI compiled,
 just in case it fails, that's why not both compiles,
 so no change in the source code.
 In any case the code it generates is the same.

2015.05.08
added option to Edit after save file ( why else would you save it )
added save path of saved file to ini, when ini file exists.
added Send to ScITE ( easier than copy and paste )
changed the default TAB width to 4 ( looks better in ScITE )

2015.05.07
added keyboard shortcuts
 Ctrl-F11 to change font size
 Ctrl-T to change tab sizes
 the others are the underscore letter with Ctrl instead of Alt key
 ( but those should work with Alt. by default too )
added settings saving.
 default is @AppDataDir & '\ScriptOMaticForAutoIt3\ScriptOMatic.ini'
 but if one is found in @ScriptDir & '\ScriptOMatic.ini'
 that is the one to be used.
changed in the ANSI version to a more useful _ArrayDisplay version.
added cleanup on exit.
added tab adjustment.
added font choosing.
added font background color choosing.
added User or Admin mode info. to the title bar.
added option to set the string inside the cell (<td 'your string'>)
 for the user to change the default color and style
changed the debug info. to ToolTip, to be better aware of running status.
changed the way it writes TEXT and HTML to be so every 100 records.
added the ability to open the files from failed or prior runs
 by double-clicking the radio button.
changed file creation naming format
 to better identify them.

2015.05.06
Better readability for HTML and Text outputs.
Left the state of the source code ready for the current version.
Added a v3.3.12.0 compiled version ( better behavior under Win 8.1 and 10 )
and renamed the ANSI version.

2015.05.05
Fix a logic that would say fail when it was a limited listing of Namespaces,
it now tells that the listing is limited.

2015.05.04
Added announcement of Admin. rights ( user might not know )
rethought the "_Array2D_toHtml.au3" to be an #include ( as it should have been )
reworked the Namespace combobox loading
went from MsgBox and ToolTip to TrayTip and TrayIconDebug ( less intrusive )
www search now "Google it" ( MSDN change the links format )
Fixed the compiled _ArrayDisplay from displaying off center

2015.05.03
Added an array rotator ( at times I'd rather see it rotated )
Added an array to html ( to see the array on the browser ),
that also can be rotated ( it uses the array rotator )

2015.05.02
Enable Ctrl-A, C, V, X, Z to use the keyboard
Prettified the output a bit more and corrected some typos.

2015.05.01
And added press F5 like in ScITE, ( my finger just goes there ) to the Run button.
Also a "STOP" to the run ( at times I mess up and need to ProcessClose )
And set $MB_TOPMOST to the MsgBox ( so I don't loose them from sight )
And made the output of the array to be a function ( easier to use in a script ) 
And prettified the GUI a bit, not much.

==== EoF ====

In the zip is the source code for the current version and an AutoIt v3.2.12.1 ANSI compiled file that should run on any Windows version.

uc?export=view&id=0B4wbNI5yp94SdU5KWDZHY


What's New in Version 0.2015.11.28

Released

added a StatusBar. ( was not easy to resize in win10 )
fixed COM handler in generated code





User Feedback

You may only provide a review once you have downloaded the file.

There are no reviews to display.

  • Similar Content

    • Irios
      How to enumerate all properties in an object variable (wmi) when I don't know their names? [SOLVED!]
      By Irios
      First post here, please be gentle
       
      I've spent hours and hours trying to figure out this puzzle. It's impossible to google for because I don't know the precise terminology to use. All msdn links I find are either dead or has been removed like 10 years ago.
       
      Here is a tiny code example:
      $objWMIService = ObjGet("winmgmts:") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface Where Name like '%intel%'") For $objItem In $colItems ConsoleWrite($objItem.PacketsPersec & @CRLF) Next In that example I'm using the asterix * and it retrieves all properties in the "Win32_PerfRawData_Tcpip_NetworkInterface" class.  But I'm only utilizing "PacketsPersec" in the example.
      How could I enumerate all the properties without defining their names beforehand?
      (FYI, I do know their names, but the script doesn't know the names)
      In other words; how can I use "SELECT *" on any class and output all properties, one by one? Without having to manually specify each property with $objItem.<propertyname> ?

      As comparison, using wmic in a cmd shell ...
          wmic path Win32_PerfRawData_Tcpip_NetworkInterface  Where "Name like '%intel%'" get /value
      ...and it lists all properties in "Names=Value" manner.
      This is sort of the same function I'm looking for. How could I do the same in Autoit?
       
       
      EDIT: I cannot run a powershell or cmd  to "solve" the problem.  I need to find a way to do this "internally" in Autoit. I.e. by calling the WMI service directly with ObjGet(winmgmts:) or connect to the WMI system with CreateObject("WbemScripting.SWbemLocator"). Performance is a major factor.
    • jguinch
      Printers Management UDF
      By jguinch
      Hello.
      I did create these few functions several months ago. I post here, if it can interest someone.
      These functions based on WMI queries allow you to manage printers : add / delete printer, driver, port, or obtain configuration, set default printer ... I let you discover it with the code.

      WARNING : this UDF has been updated (july 2016). Function names have changed.
      The previous (old) version is available (for now)  to download at the top of this message.
       
      Here is the list of the available functions :
      _Printmgr_AddLocalPort
      _PrintMgr_AddPrinter
      _PrintMgr_AddPrinterDriver
      _PrintMgr_AddTCPIPPrinterPort
      _PrintMgr_AddWindowsPrinterConnection
      _PrintMgr_CancelAllJobs
      _PrintMgr_EnumPrinter
      _PrintMgr_EnumPrinterConfiguration
      _PrintMgr_EnumPrinterDriver
      _PrintMgr_EnumPrinterProperties
      _Printmgr_Pause
      _Printmgr_PrinterExists
      _Printmgr_PrintTestPage
      _PrintMgr_RemoveLocalPrinterPort
      _PrintMgr_RemovePrinter
      _PrintMgr_RemovePrinterDriver
      _PrintMgr_RemoveTCPIPPrinterPort
      _PrintMgr_RenamePrinter
      _Printmgr_Resume
      _PrintMgr_SetDefaultPrinter
       
      And some examples :
      #Include "PrintMgr.au3" ; Remove a printer called "My old Lexmark printer" : _PrintMgr_RemovePrinter("My old Lexmark printer") ; Remove the driver called "Lexmark T640" : _PrintMgr_RemovePrinterDriver("Lexmark T640") ; Remove the TCP/IP printer port called "TCP/IP" _PrintMgr_RemoveTCPIPPrinterPort("MyOLDPrinterPort") ; Add a driver, called "Samsung ML-451x 501x Series", and driver inf file is ".\Samsung5010\sse2m.inf" _PrintMgr_AddPrinterDriver("Samsung ML-451x 501x Series", "Windows NT x86", @scriptDir & "\Samsung5010", @scriptDir & "\Samsung5010\sse2m.inf") ; Add a TCP/IP printer port, called "MyTCPIPPrinterPort", with IPAddress = 192.168.1.10 and Port = 9100 _PrintMgr_AddTCPIPPrinterPort("MyTCPIPPrinterPort", "192.168.1.10", 9100) ; Add a printer, give it the name "My Printer", use the driver called "Samsung ML-451x 501x Series" and the port called "MyTCPIPPrinterPort" _PrintMgr_AddPrinter("My Printer", "Samsung ML-451x 501x Series", "MyTCPIPPrinterPort") ; Set the printer called "My Printer" as default printer _PrintMgr_SetDefaultPrinter("My Printer") ; Connect to the shared printer "\\192.168.1.1\HPDeskjetColor") _PrintMgr_AddWindowsPrinterConnection("\\192.168.1.1\HPDeskjetColor") ; List all installed printers #Include <Array.au3> $aPrinterList = _PrintMgr_EnumPrinter() _ArrayDisplay($aPrinterList) ; List all printers configuration #Include <Array.au3> $aPrinterConfig = _PrintMgr_EnumPrinterConfiguration() _ArrayDisplay($aPrinterConfig) ; List all installed printer drivers #Include <Array.au3> $aDriverList = _EnumPrinterDriver() _ArrayDisplay($aDriverList) ; Retrieve the printer configuration for the printer called "Lexmark T640" #Include <Array.au3> $aPrinterConfig = _PrintMgr_EnumPrinterConfiguration("Lexmark T640") _ArrayDisplay($aPrinterConfig) ; Add a local printer port (for a file output) _AddLocalPrinterPort("c:\temp\output.pcl") ; Remove the local port _RemoveLocalPrinterPort("c:\temp\output.pcl") Current version download link :
      Previous version : printers.au3  (needed only if you have to use old function names)
       
       
       
      PrintMgr.au3
    • blumi
      TPM status with wmi
      By blumi
      I found a website where it is explained how to use wmi to check the tpm status of the tmp security chip.
      http://windowsitpro.com/security/checking-status-trusted-platform-module-command-line
      I tried this with autoit, but had no success.
      Anyone here who can give little support to me?
      Thanks
      #include <Array.au3> $ScriptName = "TPM Status" Dim $sResult $strComputer = "lapxxx" $objWMIService = ObjGet("wmic /namespace:\\.\root\cimv2\security\microsofttpm") ;$objWMIService = ObjGet("wmic /namespace:\\" & $strComputer & "\root\cimv2\security\microsofttpm") ;$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") $colItems = $objWMIService.InstancesOf("Select * from Win32_Tpm") For $objItem In $colItems $IsActivated = $objItem.IsActivated_InitialValue $IsEnabled = $objItem.IsEnabled_InitialValue MsgBox(0, $ScriptName, "IsActivated: " & $IsActivated & @CRLF & _ "IsEnabled: " & $IsEnabled & @CRLF & _ "x: " ) Next $oMTpm = ObjGet("winmgmts:\\.\root\cimv2\Security\MicrosoftTpm") $oCol = $oMTpm.InstancesOf("Win32_Tpm") For $oObj In $oCol ConsoleWrite($oObj.IsActivated_InitialValue & @CRLF) ConsoleWrite($oObj.IsEnabled_InitialValue & @CRLF) ConsoleWrite($oObj.IsOwned_InitialValue & @CRLF) ConsoleWrite($oObj.SpecVersion & @CRLF) ConsoleWrite($oObj.ManufacturerVersion & @CRLF) ConsoleWrite($oObj.ManufacturerVersionInfo & @CRLF) ConsoleWrite($oObj.ManufacturerId & @CRLF) ConsoleWrite($oObj.PhysicalPresenceVersionInfo & @CRLF) Next  
       
    • jguinch
      Printer Management UDF
      By jguinch
      Here is an UDF for managing printers.
      Features are :
       - add, remove or rename a printer
       - add or remove a driver
       - add or remove a TCP/IP printer port
       - connect to a remote printer
       - enum printers and there configuration and properties
       - pause resume or cancel all jobs of a printer
       - checks if a printer exists
       - print a test page
       - set the default printer
    • FMS
      trying to find a process on a remote computer
      By FMS
      hello,
      I'm trying to make a check if a process is running on a remote PC.
      This is what i got this far when I edit a found snippet on this forum.
       
      The function _CMDreturn returns the output of the command line command.
      In this output I want to scan if there is a line whit "process mspaint was not found".
      This I'm trying to do whit StringLeft.
      The problem is that I don't get any error's and also don't get a message if it doesn't exist.
      Could somebody say to me what I'm doing wrong here?
      Or iff there is a better way to do this?
      Thanks in advanced.
       
      #include <Constants.au3> $result= _CMDreturn('C:\Tools\Ps\pslist.exe mspaint') msgbox(0,"Version",$result) Func _CMDreturn($sCommand) $cmdreturn = "" $stream = Run(@ComSpec & " /c " & $sCommand, @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDIN_CHILD) While 1 $line = StdoutRead($stream) If @error Then ExitLoop If StringLeft($line, 32) = "process mspaint was not found on" Then msgbox(0,"not found",$line) EndIf $cmdreturn &= $line WEnd Return $cmdreturn EndFunc