Windows Nachrichtenverarbeitung / Abfangen von Nachrichten



  • Hallo,
    Ich versuche grade durch eine eigene GINA DLL die existierende GINA ein wenig zu verändern bzw. zu erweitern.
    Technisch würde ich dies gerne so realisieren, dass der User u. das Passwort in dem Original Dialog abgefangen wird und wenn der Username bestimmten Kriterien entspricht (prefix) dass er dann gegen einen LDAP Authentisiert wird. Wenn dies erfolgreich war, so soll das lokale Passwort gesetzt werden.
    Soweit klappt das eigentlich auch.
    Das einizigste Problem ist, dass ich auf eine Windows Nachricht reagiere (WM_COMMAND) mit wParam = 1 und dann das Passwort setze. Scheinbar ist dies jedoch zu spät und die Authentifizierung mit dem neugesetzten Passwort schlägt beim ersten mal immer fehl.
    Was mache ich falsch?
    Ich vermute diese Nachricht wird geschickt, wenn der Button bereits gedrückt wurde und die Login-Prozedur bereits durchlaufen ist.
    Kann ich
    a) die Nachricht "Button wurde gedrückt" abfangen und erst senden wenn mein LDAP-Code durchlaufen wurde oder
    b) auf eine Windows Nachricht reagieren bevor die Prozedur "Button gedrückt" reagiert?
    c) eine andere möglichkeit nutzen?

    Danke für Komentare und Ideen

    Gruß
    dose

    //
    // Redirected WlxLoggedOutSASDlgProc().
    //
    
    BOOL CALLBACK  
    MyWlxLoggedOutSASDlgProc (HWND   hwndDlg,  // handle to dialog box
                              UINT   uMsg,     // message  
                              WPARAM wParam,   // first message parameter
                              LPARAM lParam)   // second message parameter
    {
    	BOOL bResult;
    
       // Sanity check.
       assert(pfWlxLoggedOutSASDlgProc != NULL);
       //
       // Pass on to MSGINA first.
       bResult = pfWlxLoggedOutSASDlgProc(hwndDlg, uMsg, wParam, lParam);
    
       static char entryP[256] = "";
       static char sCUserName[256] = "";
       static char sCPassword[256] = "";
    
       if (uMsg == WM_LBUTTONDOWN)
    	  DEBUG_MSG("leftbuttongedrueckt!");
    
       if ((uMsg == WM_COMMAND)&&(LOWORD(wParam) == 1)) {
    	  // Okay Button wurde gedrueckt
           LPWSTR                    lpszPrimaryDC = NULL;
           NET_API_STATUS            err = 0;
           DWORD                     parm_err = 0;
           GetDlgItemText(hwndDlg, 1502, sCUserName, 128);
           GetDlgItemText(hwndDlg, 1503, sCPassword, 128);
              DEBUG_MSG("Username:");
    	 DEBUG_MSG(sCUserName);
    	 DEBUG_MSG("Passwort:");
    	 DEBUG_MSG(sCPassword);
    }
    
    ...
    


  • Ich habe es selbst herrausgefunden.
    Es war die falsche Window Nachricht.
    Beitrag kann geschlossen werden.


Anmelden zum Antworten