Break On
$System = CreateObject("Kixforms.System")
If Not $System
$nul= MessageBox("KiXforms.Net Not Initiated. This Script Will Now Close.","Error",16)
Quit()
EndIf
$nul = $System.Application.EnableVisualStyles
$Form1 = $System.Form()
$Form1.Left = 0
$Form1.StartPosition = 0 ;FormStartPosition_Manual
$Form1.Size = $System.Size(604,588) ;(Width,Height)
$Form1.Text = "ScriptOMatic .Net v2.0"
$Form1.Top = 0
$Form1.TopMost = 0 ;False
$Button1 = $System.Button()
$Button1.Anchor = 9 ;Top,Right
$Button1.Left = 430
$Button1.Text = "Run"
$Button1.Top = 10
$Button1.Width = 40
$Button1.Click = "RunScript()"
$nul = $Form1.Controls.Add($Button1)
$Button2 = $System.Button()
$Button2.Anchor = 9 ;Top,Right
$Button2.Left = 470
$Button2.Text = "Save"
$Button2.Top = 10
$Button2.Width = 40
$Button2.Click = "SaveScript()"
$nul = $Form1.Controls.Add($Button2)
$Button3 = $System.Button()
$Button3.Anchor = 9 ;Top,Right
$Button3.Left = 510
$Button3.Text = "Open"
$Button3.Top = 10
$Button3.Width = 40
$Button3.Click = "OpenScript()"
$nul = $Form1.Controls.Add($Button3)
$Button4 = $System.Button()
$Button4.Anchor = 9 ;Top,Right
$Button4.Left = 550
$Button4.Text = "Quit"
$Button4.Top = 10
$Button4.Width = 40
$Button4.Click = "$$Form1.Hide"
$nul = $Form1.Controls.Add($Button4)
$TextBox1 = $System.TextBox()
$TextBox1.Anchor = 15 ;Top,Left,Bottom,Right
$TextBox1.BackColor = $System.Color.FromName("Control")
$TextBox1.Height = 330
$TextBox1.Left = 10
$TextBox1.MultiLine = -1 ;True
$TextBox1.ReadOnly = -1 ;True
$TextBox1.ScrollBars = 3 ;Both
$TextBox1.Text = ""
$TextBox1.Top = 82 ;70
$TextBox1.Width = 580
$TextBox1.Font = $System.Font("Courier New",8.25,0) ;Regular
$nul = $Form1.Controls.Add($TextBox1)
$TextBox2 = $System.TextBox()
$TextBox2.Anchor = 14 ;Left,Bottom,Right
$TextBox2.BackColor = $System.Color.FromName("Control")
$TextBox2.Height = 110
$TextBox2.Left = 10
$TextBox2.MultiLine = -1 ;True
$TextBox2.ReadOnly = -1 ;True
$TextBox2.ScrollBars = 2 ;Vertical
$TextBox2.Text = ""
$TextBox2.Top = 430
$TextBox2.Width = 580
$TextBox2.Font = $System.Font("Courier New",8.25,0) ;Regular
$nul = $Form1.Controls.Add($TextBox2)
$Label1 = $System.Label()
$Label1.Anchor = 14 ;Left,Bottom,Right
$Label1.BorderStyle = 0
$Label1.Height = 20
$Label1.Left = 10
$Label1.Text = "Methods:"
$Label1.Top = 415
$nul = $Form1.Controls.Add($Label1)
$GroupBox1 = $System.GroupBox()
$GroupBox1.Left = 10
$GroupBox1.Text = "Class Types"
$GroupBox1.Top = 32
$GroupBox1.Width = 210
$GroupBox1.Height = 45
$nul = $Form1.Controls.Add($GroupBox1)
$GroupBox2 = $System.GroupBox()
$GroupBox2.Anchor = 1 ;Top
$GroupBox2.Left = 225
$GroupBox2.Text = "Script Type"
$GroupBox2.Top = 32
$GroupBox2.Width = 110
$GroupBox2.Height = 45
$nul = $Form1.Controls.Add($GroupBox2)
$GroupBox3 = $System.GroupBox()
$GroupBox3.Anchor = 9 ;Top,Right
$GroupBox3.Left = 340
$GroupBox3.Text = "VBS Runtime"
$GroupBox3.Top = 32
$GroupBox3.Width = 112
$GroupBox3.Height = 45
$GroupBox3.Hide
$nul = $Form1.Controls.Add($GroupBox3)
$ComboBox1 = $System.ComboBox()
$ComboBox1.Anchor = 13 ;Left,Top,Right
$ComboBox1.IntegralHeight = 0
$ComboBox1.ItemHeight = 25
$ComboBox1.Left = 10
$ComboBox1.Text = "Select a Class"
$ComboBox1.Top = 10
$ComboBox1.Width = 410
$ComboBox1.Sorted = 1
$ComboBox1.SelectedIndexChanged = "$$=CheckType($$ComboBox2.Text)"
;$ComboBox1.Enabled = 0
$nul = $Form1.Controls.Add($ComboBox1)
$ComboBox2 = $System.ComboBox()
$ComboBox2.Anchor = 13 ;Left,Top,Right
$ComboBox2.IntegralHeight = 0
$ComboBox2.ItemHeight = 25
$ComboBox2.Left = 5
$ComboBox2.Text = "SELECT A CLASS TYPE HERE!"
$ComboBox2.Top = 15
$ComboBox2.Width = 200
$ComboBox2.Sorted = 1
$ComboBox2.SelectedIndexChanged = "$$=EnumClasses($$ComboBox2.Text)"
$nul = $GroupBox1.Controls.Add($ComboBox2)
$RadioButton5 = $System.RadioButton()
$RadioButton5.Appearance = 1 ;Button
$RadioButton5.Checked = -1 ;True
$RadioButton5.Left = 5
$RadioButton5.Text = "KIX"
$RadioButton5.TextAlign = 32 ;MiddleCenter
$RadioButton5.Top = 15
$RadioButton5.Width = 50
$RadioButton5.Click = "$$=CheckType($$ComboBox2.Text)"
$nul = $GroupBox2.Controls.Add($RadioButton5)
$RadioButton6 = $System.RadioButton()
$RadioButton6.Appearance = 1 ;Button
$RadioButton6.Left = 55
$RadioButton6.Text = "VBS"
$RadioButton6.TextAlign = 32 ;MiddleCenter
$RadioButton6.Top = 15
$RadioButton6.Width = 50
$RadioButton6.Click = "$$=CheckType($$ComboBox2.Text)"
$nul = $GroupBox2.Controls.Add($RadioButton6)
$RadioButton7 = $System.RadioButton()
$RadioButton7.Appearance = 1 ;Button
$RadioButton7.Checked = -1 ;True
$RadioButton7.Left = 5
$RadioButton7.Text = "CScript"
$RadioButton7.TextAlign = 32 ;MiddleCenter
$RadioButton7.Top = 15
$RadioButton7.Width = 50
$RadioButton7.Click = "$$=CheckType($$ComboBox2.Text)"
$nul = $GroupBox3.Controls.Add($RadioButton7)
$RadioButton8 = $System.RadioButton()
$RadioButton8.Appearance = 1 ;Button
$RadioButton8.Left = 55
$RadioButton8.Text = "WScript"
$RadioButton8.TextAlign = 32 ;MiddleCenter
$RadioButton8.Top = 15
$RadioButton8.Width = 52
$RadioButton8.Click = "$$=CheckType($$ComboBox2.Text)"
$nul = $GroupBox3.Controls.Add($RadioButton8)
$OpenFileDialog1 = $System.OpenFileDialog()
$OpenFileDialog1.InitialDirectory = "@SCRIPTDIR"
$OpenFileDialog1.Filter = "KiX files (*.kix)|*.kix|VBS files (*.vbs)|*.vbs|All files (*.*)|*.*"
$OpenFileDialog1.FilterIndex = 1
$OpenFileDialog1.RestoreDirectory = 1 ;True
$SaveFileDialog1 = $System.SaveFileDialog()
$SaveFileDialog1.InitialDirectory = "@SCRIPTDIR"
$SaveFileDialog1.Filter = "KiX files (*.kix)|*.kix|VBS files (*.vbs)|*.vbs|All files (*.*)|*.*"
$SaveFileDialog1.FilterIndex = 1
$SaveFileDialog1.RestoreDirectory = 1 ;True
$Form2 = $System.Form()
$Form2.Text = "Loading Classes..."
$Form2.ControlBox = 0 ;False
$Form2.StartPosition = 1 ;FormStartPosition_CenterScreen
$Form2.Size = $System.Size(250,60) ;(Width,Height)
$PBar = $System.ProgressBar()
$PBar.Width = 242
$PBar.Height = 25
$PBar.Style = "1"
$PBar.Center
$nul = $Form2.Controls.Add($PBar)
$=EnumNameSpaces("root")
$Form1.Center
$Form1.Show ;Displays the Form
While $Form1.Visible
$Nul = Execute($Form1.DoEvents())
Loop
Exit 0
Function CheckType($strRoot)
Select
Case $RadioButton5.Checked = -1
$GroupBox3.Hide
ListClassKIX($strRoot)
Case $RadioButton6.Checked = -1
$GroupBox3.Show
ListClassVBS($strRoot)
EndSelect
EndFunction
Function EnumNameSpaces($strNameSpace)
$ComboBox2.Enabled = 0
Dim $objWMIService, $colNameSpaces, $objNameSpace
$=$ComboBox2.Items.Add($strNameSpace)
$objWMIService = GetObject("winmgmts:\\.\"+$strNameSpace)
$colNameSpaces = $objWMIService.InstancesOf("__NAMESPACE")
For Each $objNameSpace In $colNameSpaces
EnumNameSpaces($strNameSpace+"\"+$objNameSpace.Name)
Next
$ComboBox2.Enabled = 1
EndFunction
Function EnumClasses($Root)
$Form2.Show
$PBar.Value = 0
$ComboBox1.Items.Clear
$ComboBox1.Enabled = 0
Dim $objWMIService, $objClass, $IsQ
$objWMIService = GetObject("winmgmts:\\.\"+$Root)
$PBar.Max = $objWMIService.SubclassesOf().Count
For Each $objClass in $objWMIService.SubclassesOf()
$PBar.Value = $PBar.Value + 1
$IsQ = 0
For Each $Qualifier in $objClass.Qualifiers_
If Instr($Qualifier.Name, "ASSOCIATION")
$IsQ = 1
Endif
Next
If $IsQ = 0
$=$ComboBox1.Items.Add($objClass.Path_.Class)
Endif
Next
$Form2.Hide
$ComboBox1.Enabled = 1
$objWMIService = ""
EndFunction
Function ListClassKiX($strRoot)
Dim $Class, $Script, $Script2, $objWMIService, $objClass, $objProperty, $objMethod
If $ComboBox1.Text <> "Begin by selecting a class"
$Class = $ComboBox1.Text
$TextBox1.Text = ""
$TextBox2.Text = ""
$objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\"+$strRoot)
$objClass = $objWMIService.Get($Class)
$Script = 'Break On' + @CRLF
$Script = $Script + '$$strComputer = "."' + @CRLF
$Script = $Script + '$$objWMIService = GetObject("winmgmts:\\" + $$strComputer + "\$strRoot")' + @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_
$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 + 'Next' + @CRLF
For Each $objMethod in $objClass.methods_
$Method = $objMethod.name
$Script2 = $Script2 + ' ' + $Method + ': $$objItem.' + $Method + @CRLF
Next
$script = $script + @CRLF + "? 'Press Any Key to Close the Window'" + @CRLF + "Get $"
$TextBox1.Text = $Script
$TextBox2.Text = $Script2
Else
$TextBox1.Text = ""
$TextBox2.Text = ""
Endif
$objWMIService = ""
EndFunction
Function ListClassVBS($strRoot)
Dim $Class, $Script, $Script2, $objWMIService, $objClass, $objProperty, $objMethod
If $ComboBox1.Text <> "Begin by selecting a class"
$Class = $ComboBox1.Text
$TextBox1.Text = ""
$TextBox2.Text = ""
$objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\"+$strRoot)
$objClass = $objWMIService.Get($Class)
$Script = 'On Error Resume Next' + @CRLF
$Script = $Script + 'strComputer = "."' + @CRLF
$Script = $Script + 'Set objWMIService = GetObject("winmgmts:\\" + strComputer + "\$strRoot")' + @CRLF
$Script = $Script + 'Set colItems = objWMIService.ExecQuery("Select * from $Class",,48)' + @CRLF
$Script = $Script + 'For Each objItem in colItems' + @CRLF
For Each $objProperty in $objClass.properties_
$Prop = $objProperty.name
If $objProperty.IsArray
$Script = $Script + ' For Each Item in objItem.' + $Prop + @CRLF
$Script = $Script + ' WScript.Echo "*' + $Prop + ': " & Item' + @CRLF
$Script = $Script + ' Next' + @CRLF
Else
$Script = $Script + ' WScript.Echo "' + $Prop + ': " & objItem.' + $Prop + @CRLF
Endif
Next
$Script = $Script + ' WScript.Echo' + @CRLF + 'Next' + @CRLF
If $RadioButton7.Checked = -1
$Script = $Script + @CRLF + 'WScript.Echo "Press Any Key to Close the Window"' + @CRLF + 'Wscript.StdIn.ReadLine'
EndIf
For Each $objMethod in $objClass.methods_
$Method = $objMethod.name
$Script2 = $Script2 + ' ' + $Method + ': objItem.' + $Method + @CRLF
Next
$TextBox1.Text = $Script
$TextBox2.Text = $Script2
Else
$TextBox1.Text = ""
$TextBox2.Text = ""
Endif
$objWMIService = ""
EndFunction
Function RunScript()
Dim $FSO, $strTmpName, $objScript, $objShell, $strComdLine, $nul
$FSO = CreateObject("Scripting.FileSystemObject")
$objShell = CreateObject("WScript.Shell")
If $RadioButton5.Checked = -1
$strTmpName = "temp_script.kix"
$objScript = $FSO.CreateTextFile($strTmpName)
$objScript.Write($TextBox1.Text)
$objScript.Close
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)
Else
$strTmpName = "temp_script.vbs"
$objScript = $FSO.CreateTextFile($strTmpName)
$objScript.Write($TextBox1.Text)
$objScript.Close
If $RadioButton7.Checked = -1
$strCmdLine = "cscript.exe"
Else
$strCmdLine = "wscript.exe"
EndIf
If @SCRIPTDIR<>@CURDIR
$strCmdLine = '"' + @SCRIPTDIR + $strCmdLine + '" "' + $strTmpName + '"'
Else
$strCmdLine = '"' + $strCmdLine + ' "' + $strTmpName + '"'
EndIf
$nul = $objShell.Run($strCmdLine)
EndIf
EndFunction
Function SaveScript()
Dim $dlgSave, $FSO, $strTmpName, $objScript
$FSO = CreateObject("Scripting.FileSystemObject")
If $RadioButton5.Checked = -1
$strTmpName = "temp_script.kix"
$SaveFileDialog1.FilterIndex = 1
$SaveFileDialog1.FileName = $ComboBox1.Text
Else
$strTmpName = "temp_script.vbs"
$SaveFileDialog1.FilterIndex = 2
$SaveFileDialog1.FileName = $ComboBox1.Text
EndIf
$objScript = $FSO.CreateTextFile($strTmpName)
$objScript.Write($TextBox1.Text)
$objScript.Close
If $SaveFileDialog1.ShowDialog() = 1
$dlgSave = $SaveFileDialog1.FileName
EndIf
Copy $strTmpName $dlgSave
EndFunction
Function OpenScript()
Dim $dlgOpen, $FSO, $Script, $objFile
If $OpenFileDialog1.ShowDialog() = 1
$dlgOpen = $OpenFileDialog1.Filename
$FSO = CreateObject("Scripting.FileSystemObject")
$objFile = $FSO.OpenTextFile($dlgOpen)
$Script = $objFile.ReadAll()
$TextBox1.Text = $Script
$objFile.Close
$TextBox1.Show
EndIf
EndFunction