Please see below for my latest project...

This script is designed to take a known IP address and monitor the line between the machine running the script and the specified address. It returns (at this time) Request Timed out and TTL Expired. This was written to monitor circuits where we have intermintent failures.

It was written for KixForms.Net and KiXtart 4.50

I am still working on making the stop button work, other than that it seems to be working as expected.

Any comments and suggestions are most welcome.

Code:

;*************************************************************************
; Script Name: Ping Capture
; Author: Gargoyle
; Date: 5/19/2006
; Description: To watch a specified address for intermittent drop's via ping
;*************************************************************************


Break On
$Nul = Setoption(WrapAtEOL, ON)
$Nul = Setoption(NoVarsinStrings, ON)

;============ Build the form

$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.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Form1.StartPosition = 1 ;FormStartPosition_CenterScreen
$Form1.Size = $System.Size(518,257) ;(Width,Height)
$Form1.Text = "Ping Capture"


$Label1 = $System.Label()
$Label1.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Label1.BorderStyle = 0 ;None
$Label1.Height = 24
$Label1.Left = 14
$Label1.Text = "Please enter the IP Address to ping"
$Label1.TextAlign = 16 ;MiddleLeft
$Label1.Top = 14
$Label1.Width = 243
$nul = $Form1.Controls.Add($Label1)

$TextBox1 = $System.TextBox()
$TextBox1.Left = 13
$TextBox1.Text = "000"
$TextBox1.MaxLength = 3
$TextBox1.Top = 45
$TextBox1.Width = 27
$nul = $Form1.Controls.Add($TextBox1)

$Label2 = $System.Label()
$Label2.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Label2.BorderStyle = 0 ;None
$Label2.Left = 41
$Label2.Text = "."
$Label2.TextAlign = 16 ;MiddleLeft
$Label2.Top = 43
$Label2.Width = 8
$nul = $Form1.Controls.Add($Label2)

$TextBox2 = $System.TextBox()
$TextBox2.Left = 51
$TextBox2.Text = "000"
$TextBox2.MaxLength = 3
$TextBox2.Top = 44
$TextBox2.Width = 25
$nul = $Form1.Controls.Add($TextBox2)

$Label3 = $System.Label()
$Label3.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Label3.BorderStyle = 0 ;None
$Label3.Left = 77
$Label3.Text = "."
$Label3.TextAlign = 16 ;MiddleLeft
$Label3.Top = 42
$Label3.Width = 9
$nul = $Form1.Controls.Add($Label3)

$TextBox3 = $System.TextBox()
$TextBox3.Left = 88
$TextBox3.Text = "000"
$TextBox3.MaxLength = 3
$TextBox3.Top = 44
$TextBox3.Width = 25
$nul = $Form1.Controls.Add($TextBox3)

$Label4 = $System.Label()
$Label4.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Label4.BorderStyle = 0 ;None
$Label4.Left = 115
$Label4.Text = "."
$Label4.TextAlign = 16 ;MiddleLeft
$Label4.Top = 41
$Label4.Width = 9
$nul = $Form1.Controls.Add($Label4)

$TextBox5 = $System.TextBox()
$TextBox5.Left = 125
$TextBox5.Text = "000"
$TextBox5.MaxLength = 3
$TextBox5.Top = 44
$TextBox5.Width = 27
$nul = $Form1.Controls.Add($TextBox5)


;============ To be used when and if Masked Text Box
; Becomes available in KF.Net

;$MaskedTextBox = $System.MaskedTextBox()
;$MaskedTextBox.BackColor = $System.Color.FromName("LightGoldenrodYellow")
;$MaskedTextBox.Left = 13
;$MaskedTextBox.Top = 44
;$MaskedTextBox.Length = 15
;$MaskedTextBox.Mask = "[0-2][0-9][0-9].[0-2][0-9][0-9].[0-2][0-9][0-9].[0-2][0-9][0-9]"
;$MaskedTextBox.Text = "000.000.000.000"
;$nul = $Form1.Controls.Add($MaskedTextBox)

$ComboBox1 = $System.ComboBox()
$ComboBox1.DropDownWidth = 40
$ComboBox1.Height = 21
$ComboBox1.ItemHeight = 13
$ComboBox1.Left = 380
$ComboBox1.Text = "0"
$ComboBox1.Top = 48
$ComboBox1.Width = 40
$nul = $Form1.Controls.Add($ComboBox1)

$ComboBox1Item0 = $ComboBox1.Items.Add("0")
$ComboBox1Item1 = $ComboBox1.Items.Add("1")
$ComboBox1Item2 = $ComboBox1.Items.Add("2")
$ComboBox1Item3 = $ComboBox1.Items.Add("3")
$ComboBox1Item4 = $ComboBox1.Items.Add("4")
$ComboBox1Item5 = $ComboBox1.Items.Add("5")
$ComboBox1Item6 = $ComboBox1.Items.Add("6")
$ComboBox1Item7 = $ComboBox1.Items.Add("7")
$ComboBox1Item8 = $ComboBox1.Items.Add("8")
$ComboBox1Item9 = $ComboBox1.Items.Add("9")
$ComboBox1Item10 = $ComboBox1.Items.Add("10")
$ComboBox1Item11 = $ComboBox1.Items.Add("11")
$ComboBox1Item12 = $ComboBox1.Items.Add("12")
$ComboBox1Item13 = $ComboBox1.Items.Add("13")
$ComboBox1Item14 = $ComboBox1.Items.Add("14")
$ComboBox1Item15 = $ComboBox1.Items.Add("15")
$ComboBox1Item16 = $ComboBox1.Items.Add("16")
$ComboBox1Item17 = $ComboBox1.Items.Add("17")
$ComboBox1Item18 = $ComboBox1.Items.Add("18")
$ComboBox1Item19 = $ComboBox1.Items.Add("19")
$ComboBox1Item20 = $ComboBox1.Items.Add("20")
$ComboBox1Item21 = $ComboBox1.Items.Add("21")
$ComboBox1Item22 = $ComboBox1.Items.Add("22")
$ComboBox1Item23 = $ComboBox1.Items.Add("23")
$ComboBox1Item24 = $ComboBox1.Items.Add("24")

$ComboBox2 = $System.ComboBox()
$ComboBox2.DropDownWidth = 41
$ComboBox2.Height = 21
$ComboBox2.ItemHeight = 13
$ComboBox2.Left = 436
$ComboBox2.Text = "0"
$ComboBox2.Top = 47
$ComboBox2.Width = 41
$ComboBox2.SelectedIndex = 1
$nul = $Form1.Controls.Add($ComboBox2)

$ComboBox2Item0 = $ComboBox2.Items.Add("0")
$ComboBox2Item1 = $ComboBox2.Items.Add("1")
$ComboBox2Item2 = $ComboBox2.Items.Add("5")
$ComboBox2Item3 = $ComboBox2.Items.Add("10")
$ComboBox2Item4 = $ComboBox2.Items.Add("15")
$ComboBox2Item5 = $ComboBox2.Items.Add("20")
$ComboBox2Item6 = $ComboBox2.Items.Add("30")
$ComboBox2Item7 = $ComboBox2.Items.Add("45")
$ComboBox2Item8 = $ComboBox2.Items.Add("60")

$Label5 = $System.Label()
$Label5.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Label5.BorderStyle = 0 ;None
$Label5.Left = 270
$Label5.Text = "Run monitor for:"
$Label5.TextAlign = 16 ;MiddleLeft
$Label5.Top = 14
$Label5.Width = 87
$nul = $Form1.Controls.Add($Label5)

$CheckBox2 = $System.CheckBox()
$CheckBox2.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$CheckBox2.FlatStyle = 1 ;Popup
$CheckBox2.Left = 19
$CheckBox2.Text = "Time Outs"
$CheckBox2.Top = 130
$CheckBox2.Checked = True
$nul = $Form1.Controls.Add($CheckBox2)



$CheckBox3 = $System.CheckBox()
$CheckBox3.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$CheckBox3.FlatStyle = 1 ;Popup
$CheckBox3.Left = 240
$CheckBox3.Text = "TTL Expired"
$CheckBox3.Top = 132
$CheckBox3.Width = 94
$CheckBox3.Checked = True
$nul = $Form1.Controls.Add($CheckBox3)

$RadioButton1 = $System.RadioButton()
$RadioButton1.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$RadioButton1.FlatStyle = 1 ;Popup
$RadioButton1.Left = 29
$RadioButton1.Text = "Log to File"
$RadioButton1.Top = 81
$RadioButton1.Click = "FileLog()"
$nul = $Form1.Controls.Add($RadioButton1)

$RadioButton2 = $System.RadioButton()
$RadioButton2.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$RadioButton2.FlatStyle = 1 ;Popup
$RadioButton2.Left = 31
$RadioButton2.Text = "Log to Screen"
$RadioButton2.Top = 108
$RadioButton2.Click = "ScreenLog()"
$nul = $Form1.Controls.Add($RadioButton2)



$Label7 = $System.Label()
$Label7.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Label7.BorderStyle = 0 ;None
$Label7.Left = 376
$Label7.Text = "Hours Minutes"
$Label7.TextAlign = 16 ;MiddleLeft
$Label7.Top = 14
$nul = $Form1.Controls.Add($Label7)



$Button1 = $System.Button()
$Button1.FlatStyle = 1 ;Popup
$Button1.Left = 25
$Button1.Text = "Start"
$Button1.Click = "Startup()"
$Button1.Top = 179
$Button1.Enabled = "False"
$nul = $Form1.Controls.Add($Button1)

$Button2 = $System.Button()
$Button2.FlatStyle = 1 ;Popup
$Button2.Left = 119
$Button2.Text = "Stop"
$Button2.Top = 178
$Button2.Enabled = "False"
$Button2.Click = "Stop()"
$nul = $Form1.Controls.Add($Button2)

$Button3 = $System.Button()
$Button3.BackColor = $System.Color.FromName("CornflowerBlue")
$Button3.FlatStyle = 1 ;Popup
$Button3.Left = 411
$Button3.Text = "Exit"
$Button3.Top = 178
$Button3.Click = "Done()"
$nul = $Form1.Controls.Add($Button3)

$Button4 = $System.Button()
$Button4.BackColor = $System.Color.FromName("CornflowerBlue")
$Button4.FlatStyle = 1 ;Popup
$Button4.Left = 152
$Button4.Text = "SaveAs"
$Button4.Top = 98
$Button4.Click = "Save()"
$Button4.Visible = "False"
$nul = $Form1.Controls.Add($Button4)

$Label9 = $System.Label()
$Label9.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Label9.BorderStyle = 1 ;FixedSingle
$Label9.Left = 286
$Label9.TextAlign = 16 ;MiddleLeft
$Label9.Top = 71
$nul = $Form1.Controls.Add($Label9)


$ProgressBar1 = $System.ProgressBar()
$ProgressBar1.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$ProgressBar1.Left = 283
$ProgressBar1.Text = "ProgressBar1"
$ProgressBar1.Top = 97
$ProgressBar1.Width = 225
$ProgressBar1.Value = 0
$nul = $Form1.Controls.Add($ProgressBar1)

;======================= Declerations

Global $Stopme, $array[1]
$Array[0] = "nul"
$Array[1] = "nul"

;====================== Now to do something

$Form1.Show ;Displays the Form


While $Form1.Visible
$Nul = Execute($Form1.DoEvents())
Loop
Exit 0


;============= FUNCTIONS =================================

;======================== System Checks and Setup

Function StartUP()

Dim $Run, $Element

$Stopme = 0 ;Not functional yet

$Label9.Text = "Progress" ;Let the user know what we are doing

$Label9.BackColor = $System.Color.FromName("LightGoldenrodYellow")


$Element = $Textbox1.text+"."+$TextBox2.text+"."+$TextBox3.text+"."+$TextBox5.text

If $CheckBox2.Checked = 0 AND $CheckBox3.Checked = 0
$Nul = MessageBox("You did not select what to watch for","Notice")
Exit
EndIf

If $Checkbox2.Checked = -1 $Array[0] = "Request Timed Out." EndIf
If $Checkbox3.Checked = -1 $Array[1] = "TTL expired in transit" Endif

$Run = (Cint($ComboBox1.text) * 60)*60

$Run = $Run + Cint($ComboBox2.text) * 60

If $Run = 0
$Nul = MessageBox("You did not specify the amount of time to run","Notice")
Exit
EndIf

$Progressbar1.Maximum = $Run ; set the length of the progress bar

CLS ;Clear the screen to prepare for output
? "Pinging "+$Element+" Press Ctrl+C to break out"
For $ = 0 to $Run step 5
If $Stopme = 1 ; Still not working.....
Exit
EndIf

Ping($Element)

$Progressbar1.Value = $ + 1; Update progress bar
Next

;===================== Reset the form

$Button1.Enabled = "False"
$Button1.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Button2.Enabled = "False"
$Button2.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$RadioButton1.Checked = 0
$RadioButton2.Checked = 0
$Label9.Text = "Stopped"
$Label9.BackColor = $System.Color.FromName("Crimson")
$TextBox1.Text = "000"
$TextBox2.Text = "000"
$TextBox3.Text = "000"
$TextBox5.Text = "000"

EndFunction

;====================== User Clicked Exit
Function Done()
Close(1)
Quit (1)
EndFunction

======================= Save to file

Function Save()
$Save = $System.SaveFileDialog()
$Save.Defaultext = "txt"
$Save.Filename = "Capture"
$Save.Filter = "*.txt"
$Save.OverwritePrompt = "True"
If $Save.Showdialog = 1
Open(1,$Save.Filename,5)
EndIf

$Button1.Enabled = "True"
$Button1.BackColor = $System.Color.FromName("SpringGreen")

$Button2.Enabled = "True"
$Button2.BackColor = $System.Color.FromName("Crimson")

EndFunction

;====================== Actual Ping stuff
Function Ping($Element)
For $ = 0 to 1
If $Array[$] <> "nul"
Shell 'CMD.EXE /c PING -n 1 '+$Element+' | find /i "'+$Array[$]+'" >nul'
If @error = 0
If $FileLog = -1
Writeline(1,$Element + " Returned "+ $Array[$] + " at " + @Time + " " + @Date + @CRLF)
? $Element + " Returned "+ $Array[$] + " at " + @Time + " " + @Date
Else
? $Element + " Returned "+ $Array[$] + " at " + @Time + " " + @Date
EndIf
Else
Sleep 2
EndIf
EndIf
Next
$Nul = Execute($Form1.DoEvents(1))
EndFunction

;======================= Still trying to get this to work
Function Stop()
$Stopme = 1
EndFunction

;======================= Set form objects to allow for File save button
Function FileLog()
$Button4.Visible = "True"
$FileLog = -1
$Button1.Enabled = "False"
$Button1.BackColor = $System.Color.FromName("LightGoldenrodYellow")
$Button2.Enabled = "False"
$Button2.BackColor = $System.Color.FromName("LightGoldenrodYellow")
EndFunction

;====================== Turn off form objects related to File Save
Function ScreenLog()
$Button4.Visible = "False"
$FileLog = 0
$Button1.Enabled = "True"
$Button1.BackColor = $System.Color.FromName("SpringGreen")

$Button2.Enabled = "True"
$Button2.BackColor = $System.Color.FromName("Crimson")
EndFunction

_________________________
Today is the tomorrow you worried about yesterday.