Wenn Sie jemand fragen würde, "wie kann man ein Eingabefeld erstellen, in welchem man den eingegebenen Text nicht am Bildschirm sehen kann?", würden Sie ihm antworten: "einfach die PasswordChart-Eigenschaft verwenden, so dass z.B. lauter kleine Sternchen angezeigt werden". Korrekt! Nun soll es aber Programme geben, die es sich zur Aufgabe gemacht haben, genau solche "geschützten" Eingabefelder auszuspionieren, da ja hier meist vertrauliche Daten in Form von Passwörtern eingegeben werden. Diese Programme gibt es auch tatsächlich. Im Bereich Visual Basic Programmierung gibt es ein solches auch als Quellcode (PassSniff oder wie es auch immer heisst). Wie kann man sich und damit seine Anwender nun gegen solche "Spionage"-Programme schützen? Wir zeigen's Ihnen! Alles, was wir dazu brauchen, ist die Tag-Eigenschaft der TextBox. In dieser Eigenschaft speichern wir uns die Eingabe des Users im Klartext, also die Zeichen, die auch eingegeben wurden. Im Eingabefeld selbst zeigen wir anstelle der Zeichen aber immer nur Leerzeichen (oder Sternchen) an. Somit brauchen wir noch nicht einmal die PasswordChar-Eigenschaft. Und hier der Code Private Sub Text1_KeyPress(KeyAscii As Integer) Dim sText As String Dim lPos As Long Dim lLen As Long ' aktueller Inhalt sText = Text1.Tag ' Eingabeposition lPos = Text1.SelStart ' Falls Zeichen markiert sind -> Länge der Markierung lLen = Text1.SelLength Select Case KeyAscii Case 8 ' Backspace If lLen > 0 Then ' markierten Textbereich löschen sText = Left$(sText, lPos) + _ Mid$(sText, lPos + lLen + 1) Else If lPos > 0 Then ' Zeichen links von der Eingabemarke löschen sText = Left$(sText, lPos - 1) + _ Mid$(sText, lPos + 1) End If End If Case Is > 31 ' Zeichen an der Eingabemarke einfügen ' (ggf. Markierung ersetzen) sText = Left$(sText, lPos) + Chr$(KeyAscii) + _ Mid$(sText, lPos + lLen + 1) ' Eingabe im Eingabefeld als Leerzeichen ' darstellen (42, falls Sternchen gewünscht ;-)) KeyAscii = 32 End Select Text1.Tag = sText End Sub Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Dim sText As String Dim lPos As Long Dim lLen As Long ' aktueller Inhalt sText = Text1.Tag ' Eingabeposition lPos = Text1.SelStart ' Falls Zeichen markiert sind -> Länge der Markierung lLen = Text1.SelLength Select Case KeyCode Case vbKeyDelete ' Entfernen-Taste If lLen > 0 Then ' markierten Textbereich löschen sText = Left$(sText, lPos) + _ Mid$(sText, lPos + lLen + 1) Else If lPos > 0 Then ' Zeiche "unter" der Einfügemarke löschen sText = Left$(sText, lPos) + _ Mid$(sText, lPos + 2) End If End If Case 86 If Shift = 2 Then ' Strg+V verhinern ' (Einfügen aus der Zwischenablage) Clipboard.Clear End If End Select ' neuen Inhalt in der Tag-Eigenschaft speichern Text1.Tag = sText End Sub Sie müssen jetzt nur daran denken, dass Sie anstelle der Text-Eigenschaft nun die Tag-Eigenschaft zum Auslesen der Eingabe verwenden. Beispiel: Private Sub Form_Load() ' WICHTIG! Text1.Tag = Text1.Text Text1.Text = Space$(Len(Text1.Text)) End Sub Plazieren Sie zur Kontrolle noch ein Label-Control auf die Form, so dass Sie prüfen können, ob die Eingabe auch wirklich korrekt in der Tag-Eigenschaft gespeichert wird. Die Aktualisierung des Label-Controls erfolgt sowohl im Text1_KeyPress, als auch im Text1_KeyDown-Ereignis: Private Sub Text1_KeyPress(KeyAscii As Integer) ... ' neuen Inhalt in der Tag-Eigenschaft speichern Text1.Tag = sText ' zur Kontrolle: Label1.Caption = Text1.Tag End Sub Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) ... ' neuen Inhalt in der Tag-Eigenschaft speichern Text1.Tag = sText ' zur Kontrolle: Label1.Caption = Text1.Tag End Sub Dieser Tipp wurde bereits 16.111 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevEingabe 3.0 ![]() Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Tipp des Monats ![]() LonelySuicide666 Alphablending mit Alpha-Maske im Highspeed Dieser Tipp zeigt eine sehr schnelle Variante, um ein Sprite transparent über einen Hintergrund zu bewegen. TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |