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.