Übersicht
0001 Version der ScriptEngine ermitteln
Mit der folgenden Funktion prüfen Sie, ob auf Ihrem System die ScriptEngine installiert ist und um welche Version es sich dabei handelt: Function getScriptVersion Dim s s = ScriptEngineMajorVersion & "." s = s & ScriptEngineMinorVersion & "." s = s & ScriptEngineBuildVersion getScriptVersion = s End Function MsgBox getScriptVersion, vbInformation, ScriptEngine & " Version:" | |
Autor: ralf schlegel |
0002 String in ASCII-Zeichen auflösen
Das folgende Beispiel zeigt, wie man einen String in ASCII-Werte zerlegt. Gleichzeitig sehen Sie die Verwendung von InputBox und MsgBox zur Ein- und Ausgabe; Syntax und Konstanten sind mit der gewohnten Entwicklungsumgebung von Visual-Basic identisch: Function ASCIIConvert(srcString) Dim i, CurChr On Error Resume Next ASCIIConvert = "" For i = 1 To Len(srcString) CurChr = Mid(srcString, i, i + 1) ASCIIConvert = ASCIIConvert & " " & Asc(CurChr) Next ASCIIConvert = srcString & ":" & Chr(13) & Right(ASCIIConvert, Len(ASCIIConvert) - 1) End Function Dim s s = InputBox ("Geben Sie Ihren Text ein:","vbzTextToASCII") s = ASCIIConvert (s) MsgBox s, 64, "vbzTextToASCII" ' 64 = vbInformation | |
Autor: ralf schlegel |
0003 Drucken mit VB-Script
NEIN - Sie brauchen nicht weiter zu suchen! VBScript stellt kein Printer-Objekt zur Verfügung und hat auch sonst keine Methoden um ein Dokument zu drucken! Wenn Sie einen zur Laufzeit generierten Text auf dem Drucker ausgeben wollen, müssen Sie sich eines kleinen Tricks bedienen: Dim fName Dim fso, file Dim shell ' 1.) Daten in eine temporäre Datei schreiben: Set fso = CreateObject("Scripting.FileSystemObject") fName = "C:\Temp\Printer.txt" ' Datei öffnen und beschreiben: Set file = fso.CreateTextFile(fName, True) file.Write "Irgendein Text: " vbCrLf file.close ' Datei schliessen Set file = Nothing Set fso = Nothing ' 2.) Datei über Notepad ausdrucken: Set shell = CreateObject("Wscript.Shell") shell.Exec "Notepad.exe /P """ & fName & """" Set shell = Nothing Hinweis: Die mehrfachen Anführungszeichen in der 'shell.Exec'-Zeile sorgen dafür, dass der übergebene Dateiname als Ganzes interpretiert wird! Das ist dann zwingend erforderlich, wenn in Ihrem Dateinamen Leerzeichen enthalten sind, da Notepad den Dateinamen sonst in mehrere Parameter zerlegen würde!
| |
Autor: ralf schlegel |
0004 Standard Drucker festlegen
Mit VB-Script läßt sich sehr einfach der Standard-Drucker wechseln, dies ist sicher interessant in Verbindung mit Tipp Nummer 0003, sodass der Ausdruck geziehlt erfolgen kann. Voraussetzung ist, dass Sie den Namen des Drucker kennen - so wie er auch in der Liste der "Geräte und Drucker" (siehe Systemsteuerung) benannt ist. Im folgende Beispiel machen wir den "PDFCreator" zum Standard-Drucker: Dim objWMIService Dim objPrinter Dim colInstalledPrinters Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set colInstalledPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer Where Name = 'PDFCreator'") For Each objPrinter in colInstalledPrinters objPrinter.SetDefaultPrinter() Next | |
Autor: ralf schlegel |
0005 Microsoft Word gekonnt starten
Eine andere Applikation mit VB-Script zu starten ist mit dem shell.Exec Befehl keine Kunst. Was aber, wenn man diese Applikation nur einmal öffnen will? Dann muss man wissen, ob die Anwendung bereits läuft, denn in diesem Fall soll sie nur in der Vordergrund gebracht werden. Aufgrund der umfangreichen VB-Schnittstelle in MS-Word ist das keine große Sache: Sub startWord Dim objWordApp On Error Resume Next ' Versuchen eine WORD-Instanz zu finden: Set objWordApp = GetObject(, "word.Application") ' Wenn nicht vorhanden, neue Instanz anlegen: If err.number = 429 Then err.clear Set objWordApp = CreateObject("word.Application") End If With objWordApp ' mindest. 1 leeres Dokument öffnen If .Documents.count < 1 Then .Documents.Add ' mit einem Trick in den Vordergrund bringen: If .Tasks.Exists("Word") Then .Tasks("Word").WindowState = 2 ' Fenster minimieren .Tasks("Word").WindowState = 0 ' und wieder herstellen End If ' und Anzeigen: .Visible = True End With Set objWordApp = Nothing End Sub Hinweis: Da es keine 'SetForeground' Methode o.ä. gibt, wird bei einer bestehenden Instanz das gefundene Fenster erst minimiert und dann wiederhergestellt. Dadurch erscheint es automatisch im Vordergrund.
| |
Autor: ralf schlegel |
0006 VBScript mit UAC Unterstützung
Mit VB-Script lassen sich viele schöne Dinge automatisieren:
...wäre da nicht das lästige UAC (User Access Control), das solche Aktionen seit MS Vista selbst für angemeldete Administratoren blockiert. Nun - die Blockade kann man nicht umgehen. Man kann aber dafür sorgen, dass sich ein Script selbst mit "RunAsAdministrator" aufruft(!), sodass der Bildschirm abdunkelt und ein Dialog vom Benutzer bestätigt werden muss. Danach haben Sie wieder freie Hand, was das Scripting angeht! Die hier zum Download bereitgestellte Datei beinhaltet einen solchen "Script-Rumpf"! Das Script ist ausführlich dokumentiert. Den Beispielabschnitt im Script können Sie für die eigene Verwendung natürlich löschen! | |
Autor: ralf schlegel |