VB.net

VBclassic

   Peter Götz

 E-Mail an Peter Götz

 
 

 
 

 

 
 

Für die hier veröffentlichten Programmbeispiele wird keinerlei Gewähr übernommen

 
 

 
Sollten Sie hier keine Antworten auf Ihre Fragen finden, besuchen Sie die
Microsoft Newsgroups

 

 
   

letzte Aktualisierung: 25. Juni 2010 

 
 

  

 
   
   

Multimedia / Midi

 
   

MidiOrchestra
Ver.: 1.0.0.1
(VB.net 2008)

Mit MidiOrchestra, einer Soundkarte und einem Midi-Keyboard wird der PC zu einem vielseitigen Musikinstrument.

MidiOrchestra kann über ein externes Midi-Keyboard mit Midi- oder USB-Schnittstelle oder auch über die Bildschirmtastatur gespielt werden. Mit Soundkarten der Fa. Creative Labs (Soundblaster / X-fi) steht mit Hilfe ladbarer Soundfontdateien (*.sf2) eine unbegrenzte Vielfalt an Instrumentenklängen zur Verfügung,
 

 
   

Datenbank

 
    SQLserver_00
(VB.net 2005)
  • Auflisten der lokal und im LAN erreichbaren SQL-Server bzw. SQLexpress.
  • Auflisten der beim jeweiligen SQL-Server/SQLexpress verfügbaren Datenbanken.
  • Auflisten der Tabellen in der jeweiligen Datenbank.
  • Lesen und Bearbeiten der ausgewählten DB-Tabelle.
     
SQLserver_01
(VB.net 2005)

Ermitteln von MetaDaten aus einem SQL-Server bzw. SQLexpress.

Es werden u.a. Auflistungen wie
DataBases, Users, Tables, Views, Procedures, DataTypes usw. ausgelesen
 

SQLserver_02
(VB.net 2005)

Ermitteln aller im SQL-Server / SQLexpress vorhandenen Datenbanken und der darin gespeicherten Tabellen mit deren Spalteneigenschaften.

 
    OLEDB1 (Access.mdb)
(VB.net 2005)
  • Öffnen einer Connection zu einer beliebigen DB-Datei (*.mdb)
  • Anzeige der in dieser DB-Datei enthaltenen Metadaten-Auflistungen wie Tables, Views, DatTypes usw.
OLEDB2 (Access.mdb)
(VB.net 2005 / VB.net 2008)
  • Öffnen einer beliebigen DB-Datei (*.mdb) mit oder ohne internem DB-Kennwort.
  • Öffnen und bearbeiten (lesen, schreiben, löschen von Daten)  beliebiger Benutzertabellen.
Jet_GetUserList (Access.mdb)
(VB.net 2005)

Auflisten aller mit einer bestimmten Access-DB (*.mdb) verbundenen Rechner.
Die Dateiauswahl erfolgt in einem Windows-Dateidialog. Falls die *.mdb mit einem internen DB-Kennwort geschützt ist, wird dieses in einem zusätzlichen Dialogfenster abgefragt.
 

 
    Excel_Meta
(VB.net 2005)

Erstellen einer OleDbConnection zu einer Excel-Datei (*.xls).
Die Dateiauswahl erfolgt mit Hilfe eines Windows-Dateidialoges oder durch direkte Eingabe des vollst. Dateipfades in einer Textbox.

Auslesen der Metadaten wie Tabellen (Arbeitsmappen), Spalten usw. aus der Excel-Datei.
In einer ComboBox werden die verfügbaren Metadaten-Auflistungen gezeigt. Nach Auswahl in der ComboBox wird die entspr. Auflistung in einem DataGridView angezeigt.

DB CommandObjekte / DataReader
(VB.net 2005)

Dieses Beispiel zeigt die Verwendung des DataReaders sowie die Erstellung von Commandobjekten zum direkten Bearbeiten einer Datenbanktabelle (ohne DataAdapter).
Es werden Daten aus einer Tabelle einer Access.mdb über einen Select-Command (OleDbCommand) u. OleDbDataReader in eine lokale DataTable gelesen und in einem DataGridView angezeigt.

  • Ein Insert-Command (OleDbCommand) erlaubt das Hinzufügen neuer Datensätze in die DB-Tabelle.
     
  • Ein Update-Command (OleDbCommand) ändert vorhandene Datensätze in der DB-Tabelle..
     
  • Ein Delete-Command (OleDbCommand) löscht jeweils einen im DataGridView ausgewählten Datensatz aus der DB-Tabelle.

In einem zweiten Fenster können alle Änderungen an der DB-Tabelle beobachtet werden um so Unterschiede zwischen dem jeweils akt. Datenstand in der lokalen DataTable und der originalen DB-Tabelle zu erkennen.
Die zum Download bereitgestellte Zip-Datei enthält das VB2005-Projekt sowie zwei Testdatenbanken (TestDB.mdb und TestDBPwd.mdb).
 

 
   

DataGridView

 
    DataGridView DragDrop
(VB.net 2005)

Ziehen und ablegen (DragDrop) von Zeilen aus einem DataGridView-Steuerelement in ein anderes DataGridView-Steuerelement.

Anzeige eines ToolTip-Textes in einer bestimmten Zelle des DataGridView
 

 

DataGridView (DataView) FindRow
(VB.net 2005)

Suchen nach einem Datensatzes mit einem bestimmten Spalteninhalt.

Die DataView.Find-Methode erfordert, dass die Spalte, in welcher nach einem Begriff gesucht werden soll, sortiert ist.
In vielen Fällen ist es jedoch nicht erwünscht, dass eine vom Benutzer gewählte Sortierung vom Programmcode verändert wird.

Das Beispiel DGV_FindRow zeigt einen Ausweg.
 

 

DataGridView ColumnMapping
(VB.net 2005)

Beim Binden eines DataGridView z.B. an eine DataTable/DataView durch DGV.DataSource = DataView zeigt das DataGridView alle Spalten der zugrundeliegenden DataTable an.

Dieses Beispiel zeigt, wie im DataGridView nur eine bestimmte Auswahl der in einer DataTable vorhandenen Columns angezeigt werden kann.   

 

 
    DataGridView AlternatingColors
(VB.net 2005)

Unterschiedliche Hintergrund- und Schriftfarben bei geraden und ungeraden Zeilen im DataGridView
Bestimmen der Textausrichtung für eine bestimmte Spalte.
Ändern der Abstände zwischen der Schrift und den Zellenbegrenzungen.
 

 

DataGridView CellFormat
(VB.net 2005)

Dieses Programmbeispiel demonstriert, wie einzelne Zellen eines DataGridView-Controls abhängig vom Zelleninhalt formatiert werden können. Im Beispiel werden Hintergrundfarbe, Vordergrundfarbe und Font einzelner Zellen beeinflusst.

 

DataGridView Format
(VB.net 2005)
 

Dieses Programmbeispiel demonstriert unterschiedliche Arten der Formatierung von Zellinhalten sowie die Verwendung von NoCurrentDateDefault aus der Aufzählung Globalization.DateTimeStyles bei der Umwandlung von Strings mit reinen Zeitangaben zu Werten vom Typ Date (mit oder ohne Addition des aktuellen Datums).

 
    DataGridView MoveRow
(VB.net 2005)

Zeilen im DataGridView nach oben oder nach unten, durch Ändern der Datensatzreihenfolge in der Datenquelle (DataTable/DataView) des DataGridView-Controls, verschieben.

 

DataGridView SelectedRows
(VB.net 2005)

Ermitteln der in einem DataGridView-Control markierten Zeilen.
Bei diesem Beispiel werden Datensätze zwischen zwei DataGridView-Controls verschoben.
Je nach Markierung werden eine, mehrere oder alle Zeilen in das jeweils andere Grid verschoben.

 

DataGridView Sum
(VB.net 2005)

Erstellen berechneter Felder für eine bestimmte Spalte im DataGridView mit Hilfe von DataTable.Columns(x).Expression sowie Ermitteln der Summe aller Werte eine Spalte mit Hilfe der DataTable.Compute - Methode.


 

 
    DataGridViewComboBoxColumn
(VB.net 2005)

Dieses Programmbeispiel zeigt die Verwendung von DataGridViewComboBoxColumn und verschiedene Möglichkeiten auf Datensatzinhalte zuzugreifen. 
 

DataGridView Sort/Unsort Rev:1
(VB.net 2005)

Sortieren bzw. Aufheben der Sortierung im DataGridView.

Das beim Original-DataGridView wenig praxisgerechte Verhalten beim Drücken der Eingabetaste wird hier durch ein erweitertes DataGridView (gsDataGridView) verbessert.
 

DataGridView RowError
(VB.net 2005)

Kennzeichnen fehlerhafter Zeilen im DataGridView mit "!" nach Validierung der Zellinhalte einer Zeile.

 
    DataGridView Master/Slave
(VB.net 2005)

Dieses Programmbeispiel demonstriert eine Master-Slave-Darstellung der Daten aus zwei DataTables in zwei DataGridView-Controls, mit Hilfe eines DataView.RowFilter auf das DataView-Objekt mit den Detaildaten.
 


 

DataGridView Relation Rev: 01
(VB.net 2005)

Dieses Programmbeispiel demonstriert eine Master-Slave-Darstellung der Daten aus zwei DataTables, welche zueinander über ein Relation-Objekt in Beziehung stehen.
 

 

DataGridView Relation 3
(VB.net 2005)

3-sufige Master- Detail- Subdetail- Darstellung von Daten aus 3 DataTables, die über Relationobjekte miteinander in Beziehung stehen.

 

 

 
    DataGridView ButtonColumn
(VB.net 2005)

Dieses Programmbeispiel zeigt die unterschiedlichen Zugriffsmöglichkeiten auf Zellinhalte einer DataGridViewButtonColumn sowie die Verwendung der Eigenschaft .UseColumnTextForButtonValue. 
 

 

DataGridView DataPropertyName
(VB.net 2005)

 
Erstellen von Spalten im DataGridView-Control, unabhängig von der tatsächlichen Anzahl der Spalten in der zugehörigen Datenquelle. Datenbindung der DataGridView-Spalten an Spalten der Datenquelle (DataTable/DataView)
  
Das Programmbeispiel verdeutlicht die Zusammenhänge zwischen Datatable, DataView, CurrencyManager u. DataGridView-Control.
 
DataGridView word wrap
(VB.net 2005)

Automatischer Zeilenumbruch mit sofortigem Anpassen der Zeilenhöhe schon während der Texteingabe in einer Spalte des DGV, wenn die Textlänge die Breite der Spalte überschreitet.
 

 

 
      DataGridView AutoResize
(VB.net 2005)

Anpassen der Spaltenbreiten sowie Zeilenhöhen an die jeweiligen Zelleninhalte, sowie verwenden von .DefaultCellStyle.WrapMode, um Zeilenumbrüche innerhalb einer Zelle zuzulassen.
 
 

   
   

DataTable / DataView / CurrencyManager

 
    DataTable ExpressionColumn,
berechnete Felder

(VB.net 2005)

Dieses Beispiel zeigt die Verwendung berechneter Felder
(DataTable.Columns(x).Expression)
zur Auswertung von Inhalten anderer Felder.

Normalerweise wird das Ergebnis in einem berechneten Feld erst angezeigt, wenn der Eingabemodus des akt. Datensatz beendet wird (z.B. EndCurrentEdit oder Wechsel zu einem anderen Datensatz). Im Beispiel wird das TextChanged-Ereignis der in den Zellen der Expression-Spalte gehosteten Textbox genutzt um eine sofortige Anzeige in dem berechneten Feld schon während des Editierens des Feldes Text zu erreichen.
 

DataView.Sort, DataView.Find
(VB.net 2005)

Nach dem Sortieren der Daten im DataGridview, steht der Datensatzzeiger normalerweise nicht mehr auf dem bisher ausgewählten Datensatz.

Das Beispiel zeigt, wie mit Hifle der Methode DataView.Find() und zwischengespeicherter Informationen zum jeweils akt. Datensatz, der Datensatzzeiger nach der Sortierung wieder auf den bisher ausgewählten Datensatz gestellt werden kann.
 

DataTable with PrimaryKey
(VB.net 2005)
(VB.net 2008)

In diesem Beispiel wird eine DataTable mit einem Primärschlüsselfeld erstellt.
Die Daten dieser DataTable werden über eine DataView in einem DataGridView angezeigt.

Unabhängig von der akt. Sortierung im DataGridView können Datensätze mit einer bestimmten LCID (Primärschlüsselfeld) gesucht werden.

Die Suche erfolgt dabei in zwei Schitten mit Hilfe von  DataTable.Rows.Find(LCID) und mit Hilfe von DataView.FindRows()

 
Textbox DataBinding

Dateneingabe in eine DataTable über gebundene Textboxen.

Das Beispiel zeigt, wie Textboxen mit Hilfe von Binding-Objekten an eine DataTable gebunden werden.

 Ein zusätzlich zu den Textboxen auf der Benutzeroberfläche angeordnetes DataGridView zeigt den Inhalt der gesamten DataTable.

Dateneingabe erfolgt ausschliesslich über die Textboxen. Im DataGridView werden keine Eingaben zugelassen.

DataTable / DataView, RowState
Ver: Feb/2007
(VB.net 2005)

Dieses Programmbeispiel zeigt die Zusammenhänge zwischen DataTable u. Dataview, sowie die Auswertung der verschiedenen Rowstates. Der Inhalt einer DataTable mit einem berechneten Feld wird in einem DataGridView dargestellt.

DualCombo
VB.net 2005

Synchronisation von zwei unterschiedlich sortierten ComboBoxen, die an die selbe Datenquelle gebunden sind.
 
Häufig möchte man dem Benutzer eines Programms die Möglichkeit geben, einen bestimmten Datensatz aus einer Tabelle wahlweise nach einer Nummer mit numerischer Sortierung oder nach einem Text mit alphabetischer Sortierung auszuwählen. Im Beispiel kann die Auswahl wahlweise in einer ComboBox mit aufsteigend sortierten Nummern oder einer zweiten ComboBox mit alphabetisch sortierten Texten erfolgen, wobei die Anzeige in beiden ComboBoxen immer synchron bleibt.
 
 

   

DataGrid

 
    DataGridNumericColumn R1

DataGrid-Spalte welche nur numerische Eingaben zulässt.
Die Eigenschaft NumDecimales bestimmt die Anzahl der zulässigen bzw. anzuzeigenden Dezimalstellen.
 

DataGrid Demo Textbox/Checkbox

(Neue Vers.5) Erstellen erweiterter DataGridColumnStyle - Klassen zur Darstellung von Textboxen und Checkboxen im DataGrid.
 

DataGridComboBoxColum 
R2.3 
 18.Jan.2006

ComboBox im DataGrid durch eine erweiterte DataGridColumnStyle - Klasse.
Es sind alle ComboBoxStyles verfügbar:
       DropDown
       DropDownList
       Simple
 

 
    DataGrid Scroll
(VB.net 2005 u. VB.net 2003)

Das DataGrid bietet keine Möglichkeit vom Programmcode aus zu scrollen. Ebenso fehlen Methoden zum Einstellen der opt. Spaltenbreiten. Auch eine FirstVisibleRow-Eigenschaft sucht man beim originalen DataGrid vergeblich. Das in diesem Beispiel gezeigte erweiterte DataGrid (gsDGrid) verfügt über diese fehlenden Methoden und Eigenschaften.

Das Beispiel steht zum Download als
VB2005-Projekt (.net FW2.0)
und auch als
VB2003-Projekt (.net FW1.1)
zur Verfügung.
 
 

DataGrid AutoSizeColumn

Im Gegensatz zum neueren DataGridView hat das DataGrid keine AutoResize-Funktion zum autom. Anpassen der Spaltenbreiten an den jeweiligen Inhalt.
 
Dieses Programmbeispiel zeigt, wie auch  das ältere DataGrid mit einer entspr. Funktionalität zum autom. Anpassen der Spaltenbreite ausgestattet werden kann.
 

   
   

Printer / Printerdialoge

 
    Printer Dialog
Settings, PaperSources, PaperSizes

 
Öffnen des Printerdialoges und Anzeige der spezifischen Einstellungen für den jeweiligen Drucker.
Printer Dialoge
PrinterSettings, PageSettings

(VB.net 2005)

Dieses Beispiel demonstriert die Verwendung der Druckerdialoge (Druckerauswahl und Seiteneinstellungen) und zeigt die Zusammenhänge zwischen PrintDocument, PrinterSettings und PageSettings
 

PrintSample
Drucken mit dem PrintDocument - Objekt.

(VB.net 2005)

Das Programmbeispiel verdeutlicht die Abläufe beim Drucken mit dem PrintDocument - Objekt aus dem .net - Framework

 
   

Multithreading / BackgroundWorker

 
    Thread Priority
(VB.net 2005)
 
Verhindern des Blockierens der Benutzeroberfläche während der Ausführung lang andauernder Rechenoperationen.
 
Das Beispiel zeigt die Verwendung eines separaten Threads mit niedriger Priorität zum Ausführen lang anhaltender Rechenoperationen, um so die Benutzeroberfläche nicht zu blockieren. 
 
BackGroundWorker-Threading
(VB.net 2005)

Dieses Beispiel zeigt, wie mit Hilfe des BackGroundWorker-Objektes eine Anwendung so gestaltet werden kann, dass z.B. Eingaben in die Textbox oder Klicks auf die Buttons trotz parallel laufender Bearbeitungen (Threads) nicht blockiert werden.

Thread_Invoke
(VB.net 2005)

Threadübergreifende Zugriffe auf Eigenschaften und Methoden von Forms und Controls. Da solche Zugriffe nicht threadsicher sind, müssen sie über Delegaten per Invoke ausgeführt werden.

 
   

System / Netzwerk

 
    Memory Info
(VB.net 2005)

Ermitteln der tatsächlich vorhandenen und verfügbaren Speichergrössen für

  • phys. Speicher (RAM)
  • Seitenwechselspeicher (page file)
  • virtuellen Speicher

 

Impersonate / Benutzerwechsel

Programm/Thread unter einer anderen als der des angemeldeten Benutzers laufen lassen.
Das Beispiel zeigt, wie während eines Programmablaufes zu einer anderen Benutzeridentität und wieder zurück gewechselt werden kann.

Das Beispiel steht in zwei Versionen (VB.net 2003 u. VB.net 2005) zur Verfügung 
 

Remoting
(VB.net 2005)

Datenaustausch zwischen zwei Anwendungen. Client- und Serveranwendung können auf dem selben, aber auch auf unterschiedlichen Rechnern laufen.
 

 
    Validate User
(VB,net 2005)

Überprüfen ob für eine bestimmte Benutzerkennung und ein zugehöriges Passwort ein lokales oder ein Domänenkonto existiert.
 
Das Beispiel enthält ein Klassenmodul mit Funktionen zum

  • überprüfen von Benutzerkennung u. Passwort,
  • Überprüfen ob ein bestimmter Benutzer Admin-Rechte hat.
  • Erstellen eines WindowsIdentity - Objektes für "Benutzername" u. "Passwort".
     
VB Ping

VB.net-Variante des Dienstprogrammes Ping.
Ablauffähig ab FW1.1

IP Helper
(VB.net 2005, VB.net 2003)

Klassenmodul zum Ermitteln von IP Adressen für Client, DNS-Server, DHCP-Server, Gateways, WINS-Server, Lease Time u. vieler weiterer Netzwerkinfos unter Verwendung der "Iphlpapi.dll"
Ein kleines Beispielprogramm zeigt die Verwendung des Klassenmoduls

 
Ping.SendAsync [FW20]
(VB.net 2005)

Das Framework 2.0 ermöglicht mit seiner Ping-Klasse u.a. auch das asynchrone Ausführen eines Ping.
  
Dieses Programmbeispiel steht als VB.net-Projekt (Sourcecode) und als ausführbare Programmdatei (*.exe) zur Verfügung.
 

LAN Watch
(Download net_lanwatch.zip 6kB)

Überwachung des System-Ereignisprotokolls löst ein Ereignis aus bei Unterbrechen bzw. Wiederherstellung einer LAN-Verbindung.
 

    File System Watcher

Änderungen am Dateisystem überwachen.

GetTimeRemote
(03. Apr. 2010)
 

Abfragen der Maschinenzeit  (Datum/Zeit) eines entfernten oder des eigenen Rechners mit Hilfe der Api-Funktion NetRemoteTOD().
Special Folders

Ermitteln der konkreten Pfade für spezielle Verzeichnisse wie Desktop, Eigene Dateien usw.
 
 
 

 
   

Sonstige

 
     
Lotto

Zeigt das Erzeugen von Gruppen aus Zufallszahlen ohne Duplikate.
Die Auswahl sortiert/unsortiert demonstriert die Verwendung des Quicksort-Algorithmus.

 


Get DateX
(VB.net 2005)
 

Ermitteln des Datums für den ersten bis xten Montag...Sonntag eines Monats.
 
DateTimeFormat

Darstellen von Datums- und Zeitwerten in länderspezifischen Formaten.  

 
    Serial Port (RS232) Chat
(VB.net 2005)

Ein einfaches Programm zur Datenübertragung (Chat) zwischen zwei Rechnern über serielle Schnittstellen (RS232)
 

Time From Server
Rev:1 (12.03.2007)
(VB.net 2005)

Ermitteln der akt. Systemzeit eines entfernten Rechners mit Hilfe der Api-Funktion NetRemoteTOD.
 

List(Of T).Sort / IComparer
(VB.net 2005)

Zum Sortieren einer List(Of T), nach unterschiedlichen Mitgliedern von benutzerdefinierten Datentypen (Structure), werden entsprechende Vergleichsfunktionen benötigt. Das Beispiel zeigt, wie hierbei IComparer implementierende Klassen Verwendung finden.
 

 
    Stoppuhr
(VB.net 2005)
 

Zeitmessung mit einer Auflösung von 1 Millisekunde mit Hilfe der Api-Funktionen
QueryPerformanceCounter() und QueryPerformanceFrequency()
StopWatch
(VB.net 2005)
 

Zeitmessung mit sehr hoher Auflösung (< 1 Microsekunde) mit Hilfe von Diagnostics.StopWatch
Erweiterte Datumsfunktionen

sDateExt() und cDateExt() prüfen auf die Einhaltung eines bestimmten Datums-/Zeitformates mit Hilfe von DateTime.ParseExact bei  verschiedenen DateTimeStyles
 

 
    SHA1/MD5 Hash
(VB.net 2005)

Erstellen von SHA1- oder MD5-Hashes für beliebige Dateien.
 

Feiertage

Ermitteln der beweglichen und festen Feiertage eines Jahres.
 

Montag_KW

Ermitteln des Montags einer Kalenderwoche nach ISO
 

 
    ComboBox AutoComplete
(VB.net 2005)
  • Autocomplete für ComboBox mit Hilfe einer AutoComplete StringCollection.
  • Hinzufügen neuer Einträge in die Auswahlliste der Combobox
  • Entfernen von Einträgen aus der Auswahlliste der Combobox.

Dialog "Eigenschaften von ..."
(VB.net 2005)

VB.net stellt keine direkte Möglichkeit zur Anzeige des Standarddialoges für Datei- und Verzeichniseigenschaften bereit.
Ein kleines Klassenmodul ermöglicht mit Hilfe der Api-Funktion ShellExecuteEx() das Anzeigen dieses Dialoges.
 

Login Dialog

Anmeldedaten von einem Logindialog an die aufrufende Form übergeben.
 

 
    NumInput

Nur numerische Eingaben in einer Textbox zulassen.

XOR Crypt

Verschlüsseln von Texten mit einfachen XOR-Verknüpfungen.
 

Move Control

Verschieben von Steuerelementen zur Laufzeit mit der Maus.
 

 
    RubberBand

Zeichnen (Aufziehen) eines Rahmens (Rechteck) in beliebiger Grösse auf einer Form oder einem Steuerelement mit unterschiedlichen Linienarten und Farben mit der Maus.
Picture View 1

Bildbetrachter, demonstriert die Verwendung verschiedener Graphikmethoden.

Translucent

Form und Controls mit nicht rechteckigen Konturen und durchscheinenden Flächen.
Zeigt u.a.die Verwendung von GraphicsPath und Region.
Das Beispiel steht als VBnet2003-Projekt und als VBnet2005-Projekt zum Download bereit.
  

 
           
       
        
   
    Tastaturtester      
    System/Netzwerk Dfü-Netzwerk Fenster/Controls  
    Datenbank Registry Drucken  
    Datum/Zeit Timer Dialoge  
    Multimedia Maus Sonstige  
       Softwareentwicklung  EDV-Service  
   

   

  Peter Götz

 E-Mail an Peter Götz

 

 

     
      

 

Tastaturtester (TastTest)
Ein kleiner, nützlicher Helfer für den Programmieralltag.

 
 

Dieses VB-Programm zeigt in einem kleinen Fenster für jeden Tastendruck den zugehörigen ANSI-Code und den Tastencode.
Ferner zeigt es, ob eine der Tasten Shift, Strg oder Alt gedrückt wurde. 

Das Fenster lässt sich so einstellen, dass es immer vor allen anderen Fenstern sichtbar bleibt

 
 

Download TastTest.vbp (tatest.zip 3 kB)