batch oder vbs?

1 Antwort

Wir leben inzwischen im Ende des Jahres 2023.

Auch wenn ich zu den alten Hasen gehöre, welche hin und wieder mal auf alten Kram zugreifen um mal etwas Quick&Dirty zurechtzubiegen...

VBScript wird demnächst aus dem System entfernt.

...und mit dem Ende des InternetExplorer dürften auch die Tage von mshta gezählt sein... (mshta.exe ist lediglich ein Wrapper für den IE)

also lass den alten Müll in seinem "Sarg".

demo.vbs

Set WshShell = WScript.CreateObject("WScript.Shell")
For i = 1 to 5
    WshShell.Run "mshta.exe ""about: Hello World""",1,true
Next

es geht auch so mit batch:

Demo.cmd

@echo off
:loop
    mshta.exe "about: Hello World"
goto :loop

Heute verwendet man C#, oder wenn es ein Script aus der Hüfte sein soll Powershell

...und Powershell kann sehr wohl GUI , sogar besser als HTA

demo.ps1

 # das ist das eigentliche lächerlich kleine Herz des Programms
Function DoAction ($Eventquelle)
{
  $output = &{
    'Ereignisquelle: {0}' -f $Eventquelle
    'die Aktuell Zeit ist: {0}' -f (Get-Date -f "HH:mm:ss")
    $myDice = 1..6 | Get-Random
    'Deine Glueckszahl lautet : {0}' -f $myDice
    ''
  }|out-string
  $MyTextbox.Text += $output
  $MyTextbox.SelectionStart = $MyTextbox.Text.Length;
  $MyTextbox.ScrollToCaret()
}

 #ab hier ist eigentlich alles "malen der Oberfläche"
Add-Type -a System.Windows.Forms
$MyTimer = New-Object System.Windows.Forms.Timer
$MyTimer.Interval = 5000 #Auslösezeit für Timerevent in Millisekunden 
$MyTimer.Add_Tick({DoAction 'Timmy der Timer'}) #definiere die Aktion für einen Tickevent dieses Timers ausgelöst wird
$MyTimer.Start()

$MyActionButton = New-Object 'System.Windows.Forms.Button'
$MyActionButton.Location = '10, 10'
$MyActionButton.Name = "MyActionButton"
$MyActionButton.Size = '200, 25'
$MyActionButton.TabIndex = 0
$MyActionButton.Text = "&zwischendurch abrufen"
$MyActionButton.UseVisualStyleBackColor = $true
$MyActionButton.Add_Click({DoAction 'Der bloede Knopf da oben'}) #definiere die Aktion für einen Clickevent dieses Buttons ausgelöst wird

$MyTextbox = New-Object 'System.Windows.Forms.TextBox'
$MyTextbox.Location = '12, 50'
$MyTextbox.Multiline = $true
$MyTextbox.Name = "MyTextbox"
$MyTextbox.Size = '470, 150'
$MyTextbox.Scrollbars = "Vertical"
$MyTextbox.TabIndex = 1

$Form = New-Object 'System.Windows.Forms.Form'
$Form.Size = '500, 250'
$Form.Controls.Add($MyActionButton)
$Form.Controls.Add($MyTextbox)
$Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedDialog
$Form.Name = "Form"
$Form.Text = "Ich bin Glueckszeitsammler"
$Form.Add_Load({DoAction 'Einer muss anfangen'}) #definiere die Aktion für Laden-beendet-event des Programms ausgelöst wird
 # starte GUI

While (1) {$Null=$Form.ShowDialog()} #starte die Form immer wieder neu