Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0526: Ein Passwortfeld auslesen

 von 

Beschreibung 

Das Programm ließt Passwörter aus, die mit Sternen, Punkten oder sonstigen Sonderzeichen angezeigt werden und entfert diese sogar.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

GetCursorPos, GetWindowTextA (GetWindowText), GetWindowTextLengthA (GetWindowTextLength), SendMessageA (SendMessage), SetWindowPos, WindowFromPoint

Download:

Download des Beispielprojektes [2,89 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Textfeld "Text1"
' Steuerelement: Kontrollkästchen-Steuerelement "Check1"
' Steuerelement: Beschriftungsfeld "Label5"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label4"
' Steuerelement: Beschriftungsfeld "Label1"
' Steuerelement: Beschriftungsfeld "Label3"

'Von Stephan Probst

'E-Mail Stephan-Probst@t-online.de
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Declare Function WindowFromPoint Lib "user32" _
        (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Private Declare Function GetWindowText _
                Lib "user32" Alias "GetWindowTextA" ( _
                ByVal hwnd As Long, _
                ByVal lpString As String, _
                ByVal cch As Long) As Long
                
Private Declare Function GetWindowTextLength _
                Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Private Declare Function SendMessage _
                Lib "user32" Alias "SendMessageA" ( _
                ByVal hwnd As Long, _
                ByVal wMsg As Long, _
                ByVal wParam As Long, _
                lParam As Any) As Long

Private Declare Function SetWindowPos Lib "user32" ( _
                ByVal hwnd As Long, _
                ByVal hWndInsertAfter As Long, _
                ByVal X As Long, _
                ByVal Y As Long, _
                ByVal cx As Long, _
                ByVal cy As Long, _
                ByVal wFlags As Long) As Long
       
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2

Private Const EM_SETPASSWORDCHAR = &HCC

Private Type POINTAPI
 X As Long
 Y As Long
End Type

Dim bRunning As Boolean 'Zeigt an, ob das Programm läuft

Private Sub Check1_Click()
 If Check1.Value = 1 Then
  'Fenster oben halten
  SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
 Else
  'Fenter nicht oben halten
  SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
 End If
End Sub

Private Sub Form_Load()

 'Formular anzeigen
 Me.Show
 
 'Formular immer oben halten
 SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
 
 'Aktuelle hWnd ermitteln etc.
 Call getWindowUM
End Sub

Public Sub getWindowUM()
 Dim P  As POINTAPI
 Dim lo As Long
 Dim str As String
 
 'Bis das Programm beendet wird weitermachen...
 bRunning = True
 Do Until bRunning = False
    
    'Cursorposition auslesen
    GetCursorPos P
    
    'Das entsprechende Fenster finden
    lo = WindowFromPoint(P.X, P.Y)
    
    'Den Titel auslesen
    str = String(GetWindowTextLength(lo), Chr$(0))
    GetWindowText lo, str, 100
    
    'Ergebnisse anzeigen
    Label1.Caption = str
    Label2.Caption = lo
    
    'Den Passwortcharacter entfernen
    SendMessage lo, EM_SETPASSWORDCHAR, 0, ""
    DoEvents
  Loop
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  'Programm beenden
  bRunning = False
End Sub

'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von TKProgs am 05.09.2007 um 14:18

Bei mir läuft das auch nich überall, z.b. bei Outlook nicht.
XP, SP2, VB6

Kommentar von Timon am 30.04.2007 um 09:57

Liest bei mir jedes label usw. aus, nur keine Textfelder :-) hmmm (WinXP SP2, VB6)

Kommentar von MaXX am 03.06.2005 um 05:50

Hat bei mir zb. mit Outlook funktioniert.
aber bei incredi mail pwd feld nicht . weiß jemand warum ?

Kommentar von floh am 04.06.2004 um 07:06

Bei mir wird lediglich die ID und der name der steuerelemente angezeigt, nicht aber der inhalt (Ich hab es mit einem Textfeld probiert - VB6, passwortChar='*')