Einzelnen Beitrag anzeigen

hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#1

Passwort-Übergabe an Windows

  Alt 31. Aug 2004, 19:56
Hallo zusammen
ich versuche ein Programm zu erstellen, das bei laufendem Screen-Saver mit Passwort-Schutz diesen automatisch ausschaltet und danach das in einem Edit-Feld bereit stehende Passwort in die Windows-Dialog-Box 'einfüllt'. Das Programm sollte unter W2000 oder XP laufen.
Ich bin mit nachfolgendem Code auch bereits soweit, dass mir der Screen-Saver ausgeschaltet wird und eben diese Dialog-Box angezeigt wird. Aber die enthaltene Routine mit den KEYBD_EVENT funktioniert nicht, resp. die Tasteneingaben laufen nicht ins Passwortfeld der Dialogbox, obwohl dieses fokusiert ist.
Was mache ich da falsch, resp. was habe ich vergessen oder übersehen?
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var x : integer;
var q : char;
var hDesktop: HDESK;
begin
  if not ScreenSaverRunning then
     Memo1.Lines.Append('SS läuft nicht')
  else
     begin
     Memo1.Lines.Append('SS läuft');
     hDesktop := OpenDesktop('screen-saver', 0, False, MAXIMUM_ALLOWED);
     if hDesktop <> 0 then
        begin
        EnumDesktopWindows(hDesktop, @EnumWindowCallback, 0);
        Form1.JvWavePlayer1.Play;
        for x := 1 to length(Form1.Edit1.Text) do
            begin
            q := UpCase(Form1.Edit1.Text[x]);
            keybd_event(Ord(q), 0, 0, 0);
            end;
        keybd_event(13,0,0,0);
        CloseDesktop(hDesktop);
        end
     else
        begin
        PostMessage(GetForegroundWindow(), WM_CLOSE, 0, 0);
{    SetCursorPos(10,10);
     SetCursorPos(20,20);  }

        for x := 1 to length(Form1.Edit1.Text) do
           begin
           q := UpCase(Form1.Edit1.Text[x]);
           keybd_event(Ord(q), 0, 0, 0);
           end;
        keybd_event(13,0,0,0);
        JvWavePlayer1.Play;
        end;
     end;
end;
Ich weiss, dass das ganze nicht besonders schön programmiert ist, da ich eben am ausprobieren bin.
Heinz Schneider
  Mit Zitat antworten Zitat