Here it is, the all-new KiXomatic 2.2. Now with KiX! and WKiX!!!

Using KiX (or WKIX) and KiXforms, you too can program the WIN32 Class of Windows Management Instrumentation to impress your boss or pick up members of the opposite sex!

Now uses dynamic progress bars, enhanced save and open dialogs, and best of all it will automatically detect if an output is an array and inserts the proper coding to handle the pesky array.

Order your copy today!

Or... just copy and paste the code below into your favorite editor. (Line breaks optional.)

 Code:
Break On
 
If @SCRIPTEXE<>"wkix32.exe"
 $nul=SetConsole("Hide")
EndIf
 
If Not "\\"=Left(@SCRIPTDIR,2)
 Go Left(@SCRIPTDIR,2)
 CD @SCRIPTDIR
EndIf
 
$Form = CreateObject("Kixtart.Form")
$Form.Caption = "KiXomatic 2.2"
$Form.ScaleHeight = 520
$Form.ScaleWidth = 650
$Form.Center
 
$PForm = CreateObject("Kixtart.Form")
$PForm.Caption = "Loading WMI Classes..."
$PForm.Width = 250
$PForm.Height = 60
$PForm.BorderStyle = 3
$PForm.Center
$PForm.controlbox = 0
 
$PBar = $PForm.ProgressBar
$PBar.Size = 230,15
$PBar.Style = "1"
$PBar.Center
 
$Frame = $Form.PictureBox(,,,$Form.ScaleWidth,$Form.ScaleHeight)
$Frame.BorderStyle = 2
 
$lstClass = $Frame.ComboBox(,20,15,450)
$lstClass.Additem ("Begin by selecting a class")
$lstClass.Sorted = 1
$lstClass.Value = "Begin by selecting a class"
$lstClass.OnClick = "ChooseClass()"
$nul = EnumClasses()
 
$cmdRun  = $Frame.CommandButton("Run", 475,15,35,20)
$cmdSave = $Frame.CommandButton("Save",515,15,35,20)
$cmdOpen = $Frame.CommandButton("Open",555,15,35,20)
$cmdQuit = $Frame.CommandButton("Quit",595,15,35,20)
$cmdRun.Onclick  = "RunScript()"
$cmdSave.Onclick = "SaveScript()"
$cmdOpen.Onclick = "OpenScript()"
$cmdQuit.Onclick = "$$Form.Hide"
$cmdRun.Tooltip  = "Run the script"
$cmdSave.Tooltip = "Save the script"
$cmdOpen.Tooltip = "Open a saved script"
$cmdQuit.Tooltip = "Quit KiXomatic"
$cmdRun.Enabled  = 0
$cmdSave.Enabled = 0
 
$TextBox = $Frame.TextBox(,20,37,610,460)
$TextBox.AcceptsReturn = True
$TextBox.MultiLine = True
$TextBox.Fontname = "Courier New"
$TextBox.Fontsize = "8"
$TextBox.Scrollbars = 2
If $Form.Build<34 $TextBox.MousePointer = 3 EndIf
$TextBox.Hide
 
$Form.Show
 
While $Form.Visible
	$nul=Execute($Form.DoEvents)
Loop
 
QuitScript()
Exit 1
 
Function EnumClasses()
   Dim $Max
   $PForm.Show
   $objWMIService = GetObject("winmgmts:\\.\root\cimv2")
   $PBar.Max = $objWMIService.SubclassesOf().Count
   For Each $objclass in $objWMIService.SubclassesOf()
      $PBar.Value = $PBar.Value + 1
      $IsQ = 0
      If instr($objClass.Path_.Class,"WIN32_")
         For Each $Qualifier in $objClass.Qualifiers_
            If Instr($Qualifier.Name, "ASSOCIATION") $IsQ = 1 Endif
         Next
         If $IsQ = 0 $lstClass.Additem($objClass.Path_.Class) Endif
      Endif
   Next
   $PForm.Hide
   $objWMIService = 0
EndFunction
 
Function ChooseClass()
   Dim $Max
   If $lstClass.Value <> "Begin by selecting a class"
      $Class = $lstClass.Value
      $Form.MousePointer = 11
      $PForm.Caption = "Customizing Script..."
      $PBar.Value = 0
      $PForm.Center
      $PForm.Show
      $Textbox.Show
      $TextBox.Text = ""
      $cmdRun.Enabled  = 0
      $cmdSave.Enabled = 0
      $objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
      $objClass = $objWMIService.Get($Class)
      $PBar.Max = $objClass.properties_.Count
      $Script = 'Break On' + @CRLF
      $Script = $Script + '$$strComputer = "."' + @CRLF
      $Script = $Script + '$$objWMIService = GetObject("winmgmts:\\" + $$strComputer + "\root\cimv2")' + @CRLF
      $Script = $Script + '$$colItems = $$objWMIService.ExecQuery("Select * from $Class",,48)' + @CRLF
      $Script = $Script + 'For each $$objItem in $$colItems' + @CRLF
      For Each $objProperty in $objClass.properties_
         $PBar.Value = $PBar.Value + 1
         $Prop = $objProperty.name
         If $objProperty.IsArray
            $Script = $Script + '  For each $$Item in $objItem.' + $Prop + @CRLF
            $Script = $Script + '    "*' + $Prop + ': " + $$Item ?' + @CRLF
            $Script = $Script + '  Next' + @CRLF
         Else
            $Script = $Script + '  "' + $Prop + ': " + $$objItem.' + $Prop + ' ?' + @CRLF
         Endif
      Next
      $Script = $Script + '  ?' + @CRLF
      $Script = $Script + 'Next'
      $script = $script + @CRLF + "? 'Press Any Key to Close the Window'" + @CRLF + "Get $"
      $TextBox.Text = $Script
      $cmdRun.Enabled  = 1
      $cmdSave.Enabled = 1
      $cmdRun.SetFocus
   Else
      $TextBox.Text = ""
      $cmdRun.Enabled  = 0
      $cmdSave.Enabled = 0
   Endif
   $PForm.Hide
   $Form.MousePointer = 0
   $objWMIService = 0
EndFunction
 
Function RunScript()
   $objFSO = CreateObject("Scripting.FileSystemObject")
   $strTmpName = "temp_script.kix"
   $objScript = $objFSO.CreateTextFile($strTmpName)
   $objScript.Write ($TextBox.Text)
   $objScript.Close
   $objShell = CreateObject("WScript.Shell")
   If "@SCRIPTEXE"<>"wkix32.exe"
      $strCmdLine = "kix32.exe"
   Else
      $strCmdLine = "wkix32.exe"
   EndIf
   If @SCRIPTDIR<>@CURDIR and Exist(@SCRIPTDIR + "\" + @SCRIPTEXE)
      $strCmdLine = '"' + @SCRIPTDIR + $strCmdLine + '" "' + $strTmpName + '"'
   Else
      $strCmdLine = '"' + $strCmdLine + ' "' + $strTmpName + '"'
   EndIf
   $nul = $objShell.Run($strCmdLine)
EndFunction
 
Function SaveScript()
   $objFSO = CreateObject("Scripting.FileSystemObject")
   $strTmpName = "temp_script.kix"
   $objScript = $objFSO.CreateTextFile($strTmpName)
   $objScript.Write ($TextBox.Text)
   $objScript.Close
   $dlgSave = $Form.FileSaveDialog("Save File",@SCRIPTDIR,$Class+".kix","KiX Files|*.kix|All Files|*.*|",2)
   Copy $strTmpName $dlgSave
EndFunction
 
Function OpenScript()
   $dlgOpen = $Form.FileOpenDialog("Open File",@SCRIPTDIR,,"KiX Files|*.kix|All Files|*.*|",4)
   $objFSO = CreateObject("Scripting.FileSystemObject")
   $objFile = $objFSO.OpenTextFile($dlgOpen)
   $Script = $objFile.ReadAll()
   $TextBox.Text =  $Script
   $objFile.Close
   $Textbox.Show
   $cmdRun.Enabled  = 1
   $cmdSave.Enabled = 1
EndFunction
 
Function QuitScript()
   $objFSO = CreateObject("Scripting.FileSystemObject")
   $objFSO.DeleteFile ("temp_script.kix")
   $objFSO = 0
   $nul=Setconsole("Show")
   Quit()
EndFunction


Edited By Chris S. (08/24/05 06:03 AM)

Edited by Lonkero (12/21/07 02:08 PM)
Edit Reason: re-enforced copy&paste codeblock