VBS / WSH Funktion um Meldungen auszugeben je nach Interpreter

Problem :

Wenn man ein VBS Skript schreibt und Meldungen ausgeben möchte stehen einem mehrere Wege zur Verfügung die gängigsten sind eine MsgBox und WScript.Echo das Echo wird meistens verwendet wenn das Skript über cscript.exe gestartet wird , startet man es dann mit wscript.exe bekommt man für jede Zeile die ein Echo enthällt eine gesonderte Messagebox (MsgBox)

Lösung :

Ich hab hier eine kleine Funktion geschrieben die ermittelt über welchen Interpreter wscript / cscript das Skript gestartet wurde und die Meldung anpasst.


Function ShowMessage(MSG,Titel)
Dim StrScriptInt : StrScriptInt = LCase(WScript.FullName)
' --- Check Interpreter
If Right(StrScriptInt,11) = "wscript.exe" Then
	MsgBox MSG,vbOKOnly + vbInformation,Titel
Else
	WScript.Echo Titel & "--------------" & vbCrLf & MSG & vbCrLf
End If
End Function

Neues Tool zum umziehen von Druckern

Problem :

Der Name des Druckservers hat sich verändert und soll jetzt automatisch beim anmelden der user in den verbundenen Drucker korrigiert werden.
Getestet mit Win 2000 / XP / 7

Lösung :

Ich hab mich ran gesetzt und eine neue Version ohne speichern auf File System Ebene geschrieben.

Hier die möglichen Parameter :


-o:[Servername] or /o:[Servername] = old print server
-n:[Servername] or /n:[Servername] = new print server
-l:[Logfile] or /l:[Logfile] = create an Logfile (path:filename)
-? or /? = shows this help

replace [Servername] with the hostname / ip-adress without [ and ]


Beispielaufruf sieht dann so aus :

Move_Printer.exe -o:ALTSERVER -n:NEUSERVER -l:C:\Logfile.txt


Download Tool : Move_Printer.exe (freier Download)

Hier der download des Source Codes : Source Code (nur für registrierte Mitglieder)

VBS Progress Bar

Problem:

Man möchte den einen Fortschrittsbalken in VBS anzeigen , leider bringt VBS diese Funktion nicht mit dadurch muss man den Internet Explorer verwenden

Lösung :

North Atlanta Web Design hat eine Super Klasse dafür geschrieben, so umgeht man den Weg über HTA

hier gehts zum Code : VBS Class ProgressBar

VBS Funktion: ungelesene Mails im Posteingang von Outlook ermitteln

Funktion zur Ermittlung der ungelesenen Nachrichten im Posteingang von Outlook.
Outlook muß installiert sein!
Läuft auch unter Outlook 2010.

Function unread_mails()
'Funktion zum überprüfen auf neue Mails im Ordner "Posteingang"
'In Variable "u" wird die Anzahl der ungelesenen Nachrichten übergeben

Dim unread_items, mapi, inbox, mail

Set outObj = CreateObject("Outlook.Application")

u = 0 'Zähler ungelesene Nachrichten zurücksetzen
    
Set mapi = outObj.GetNamespace("MAPI")
Set inbox = mapi.GetDefaultFolder(6) 'Zeiger auf Posteingang setzten - Posteingang = Folder(6)

For Each mail In inbox.Items 'überprüfen auf ungelesene Mails
	If mail.unread Then unread_items = unread_items + 1
Next

'Ausgabe als Msgbox
MsgBox "Sie haben " & unread_items & " ungelesene Mails in Ihrem Posteingang", vbOKOnly, "Posteingang überprüft"

End Function

Überprüfen ob Prozess läuft mit VBS/WSH

Hier eine kleine Funktion die überprüft ob ein Prozess läuft oder nicht , sie baut auf VBS / WSH und WMI auf und liefert TRUE oder FALSE zurück.

Funktion :
Function CheckProcess(name)
'------------------ check for running process
	Dim ObjProcess
	Set ObjProcess = OBJWMI.ExecQuery("select * from win32_process where name='" & name & "' ")
	If ObjProcess.Count <> 0 Then
		CheckProcess = True
	Else
		CheckProcess = False
	End If
	Set ObjProcess = Nothing
End Function



diese Funktion kann z.B. so eingebunden werden

Beispiel :

Do
     BoolCkProc = CheckProcess("notepad.exe")
     WScript.Sleep 5000
Loop Until BoolCkProc = False



Benötigt wird natürlich das WMI interface

Dim StrComputer : StrComputer = "." '-- lokaler Rechner
Dim OBJWMI : Set OBJWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & StrComputer & "\root\cimv2")

“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)