Archive for the ‘VBScripts’ category

Automated web-visit

September 19th, 2009

I have a webservice that I need to visit to get it to catch new stuff from RSS-feeds. But since it is hosted on a server where I cant run a cron-job I made a small script that i run from Eventghost.

On Error Resume Next

Set oXml = CreateObject("Microsoft.XMLHTTP")
oXml.Open "GET", "http://lifestream.ronnkvist.nu/cron/blaha/blaha", False
oXml.Send ""

'Remove comment to output the response
'wscript.echo oXml.ResponseText

Send text to Squeezecenter

September 18th, 2009

This VBScript will send a text to your squeezecenter and the text will be displayed on your Squeezebox.

I use it to show who is calling.

It uses w3Sockets from http://www.dimac.com/default3.asp?M=FreeDownloads/Menu.asp&P=FreeDownloads/FreeDownloadsstart.asp, so download and register it before trying this out.

Option Explicit
Dim i, oTelnet, outString, slimHost, slimPort, txtDuration, sendStop, headString, maxLengthHead, headPaddingChar, headPadding

slimHost = "192.168.100.50"	' IP-address to Squeezecenter
slimPort = "9090" ' Portnumber on the Squeezecenter (Standard is 9090)
txtDuration = "120" ' Seconds to show the text
sendStop = False ' Stop music?

headString = "Incoming call" ' Text to show on top row
maxLengthHead = 44 ' Max-length on top row
headPaddingChar = "*" ' On the sides of the text

Dim playerMac(1) ' Se example below
playerMac(0) = "00:04:20:00:aa:bb"	' Kitchen
playerMac(1) = "4d:22:6a:00:aa:bb"	' Soft squeeze
' ------------------------------------------------------------------------------------------------
' Example for 1 player
' Dim playerMac(0)
' playerMac(0) = "11:22:33:44:55:66"
'
' Example for 3 players
' Dim playerMac(2)
' playerMac(0) = "11:22:33:44:55:66"
' playerMac(1) = "aa:bb:cc:dd:ee:ff"
' playerMac(2) = "77:88:99:00:aa:bb"
' ------------------------------------------------------------------------------------------------

' Create top row
headString = " " & headString & " "
headPadding = ""
For i = 0 to (Round((maxLengthHead-Len(headString)) / 2))
	headPadding = headPadding & headPaddingChar
Next
outString = Replace(headPadding & headString & headPadding, " ", "%20") & " "

' Create row to show
if wScript.Arguments.Count <> 0 then
	For i = 0 to (wScript.Arguments.Count-1)
		outString = outString & wScript.Arguments(i) & "%20"
	Next
Else
	outString = outString & "Saknar%20parametrar%20till%20scriptet"
End if

set oTelnet = CreateObject("Socket.TCP")
With oTelnet
	.DoTelnetEmulation = True
	.TelnetEmulation = "TTY"
	.Host = slimHost & ":" & slimPort
	.Open

	' Loop thru all players
	For i = 0 to uBound(playerMac)
		' Skickar stop-kommandot
		if sendStop then
			' Stop the music
			.SendLine playerMac(i) & " button stop"
		end if

		' Send display-command
		.SendLine playerMac(i) & " display " & outString & " " & txtDuration

	Next

	.SendLine "exit"
	.Close
End With
Set oTelnet = Nothing

Log diskspace

September 18th, 2009

If you want to log the usage of diskspace on a computer it’s not that hard.. you just need some place to store the data and a script that runs at given intervals.

I have a table in my SQL Server.

CREATE TABLE Diskspace(
	index bigint IDENTITY(1,1) NOT NULL,
	TimeStamp datetime NOT NULL,
	FreePercent decimal(18, 3) NOT NULL,
	DriveLetter char(1) NOT NULL,
 CONSTRAINT PK__Diskspace__49C3F6B7 PRIMARY KEY CLUSTERED
(
	index ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON PRIMARY
) ON PRIMARY

Then I have a VBScript that runs every five minutes (via Eventghost). You need to change databasename, user and password.

Set oDb = createobject("ADODB.Connection")
oDb.ConnectionString = "DRIVER={SQL Server Native Client 10.0};SERVER=localhost;DATABASE=TheDatabaseName;UID=MyUserName;PWD=SomePassword; OPTION=3"
oDb.Open

Set oWmiService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set oDisks = oWmiService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType = 3")

For Each oDisk In oDisks
    sPercent = Replace(Round((oDisk.FreeSpace / oDisk.Size)*100, 1), ",", ".")
    sDisk = uCase(Replace(oDisk.DeviceID, ":", ""))

	sSql = "INSERT INTO diskspace (TimeStamp, FreePercent, DriveLetter) VALUES (GETDATE(), '" & sPercent & "', '" & sDisk & "')"
	WScript.Echo sSql
	oDb.Execute(sSql)
Next

oDb.Close

As easy as that…

Create event in EventGhost

September 13th, 2009

There are two easy ways of creating events in EventGhost.

First by commandline:

C:\Program Files\EventGhost\EventGhost.exe -E MyTestEventFromCmd
C:\Program Files\EventGhost\EventGhost.exe -E MyTestEventFromCmd WithPayload

And then via VBScript

Dim oEventGhost
Set oEventGhost = CreateObject("EventGhost")
oEventGhost.TriggerEvent "MyTestEvent"
oEventGhost.TriggerEvent "AndSomeOtherEvent", "WithPayload"
Set oEventGhost = Nothing

With that you can get EventGhost to react on loads of stuff… why not react on incoming phonecalls?
eventghostevents

Migrate data from MySQL to SQL Server

September 13th, 2009

Since I work with MS SQL Server (and have done for the last 10 years) I converted the MySQL-databases in MSure to MS SQL.
This script will copy 4 tables, easy to add more.
Remember to change the ConnectionString’s to your settings. (server, database, user and password)

Set oMySQL = createobject("ADODB.Connection")
oMySQL.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;DATABASE=msure;UID=msure;PWD=abc123; OPTION=3"
oMySQL.Open

Set oSql = createobject("ADODB.Connection")
oSql.ConnectionString = "DRIVER={SQL Server Native Client 10.0};SERVER=localhost;DATABASE=msure;UID=MSure;PWD=abc123; OPTION=3"
oSql.Open

CopyTable "UtomhusNorr"
CopyTable "UtomhusOster"
CopyTable "UtomhusSoder"
CopyTable "UtomhusVaster"

sub CopyTable(sTable)
  set oSource = oMySQL.Execute("SELECT * FROM " & sTable)
  do while not oSource.Eof

    sSql = "INSERT INTO " & sTable & " (TimeStamp, Temperature) VALUES ('" & oSource("TimeStamp") & "', '" & Replace(oSource("Temperature"),",", ".") & "')"

    wscript.echo sSql
    oSql.Execute sSql

    oSource.MoveNext
  Loop
End Sub

oMySQL.Close
oSql.Close

Automated web-visit

September 13th, 2009

If you have a webpage that you need to visit every xx minutes/hours to get some scripts to work, you can visit it via a VBScript…

On Error Resume Next
Dim oXml
Const cURL = "http://www.something.com/path/automate.php"

Set oXml = CreateObject("Microsoft.XMLHTTP")
oXml.Open "GET", cURL, False
oXml.Send ""