tomminno
16-09-2007, 11:49
Ho un problema con la disconnessione utente.
In pratica al software serve una DLL che intalla un hook globale per la tastiera.
Il problema è che all'atto della disconnessione utente su qualche macchina sparisce il cursore per inserire la password, al che uno è costretto a fare Ctrl+Alt+Canc e andare nella form di login stile Win2000 dove tutto funziona correttamente.
Ora tutto questo non accade nel caso del Fast User Switch in quanto dai log vedo che il codice arriva correttamente fino al FreeLibrary.
Al momento della disconnessione di un utente però non mi arriva nè il messaggio WM_CLOSE nè il messaggio WM_DESTORY, nè tantomeno una segnalazione sugli eventi di sessione WM_WTSSESSION_CHANGE (a cui il software si registra all'avvio), di conseguenza vedo dai log che il codice non passa per nessun distruttore e la libreria non viene scaricata.
Sembra che al momento della disconnessione venga fatto un brutale TerminateProcess da parte di Windows.
Come ne esco?
Come posso ricevere un evento di disconnessione da parte di un programma utente?
In pratica al software serve una DLL che intalla un hook globale per la tastiera.
Il problema è che all'atto della disconnessione utente su qualche macchina sparisce il cursore per inserire la password, al che uno è costretto a fare Ctrl+Alt+Canc e andare nella form di login stile Win2000 dove tutto funziona correttamente.
Ora tutto questo non accade nel caso del Fast User Switch in quanto dai log vedo che il codice arriva correttamente fino al FreeLibrary.
Al momento della disconnessione di un utente però non mi arriva nè il messaggio WM_CLOSE nè il messaggio WM_DESTORY, nè tantomeno una segnalazione sugli eventi di sessione WM_WTSSESSION_CHANGE (a cui il software si registra all'avvio), di conseguenza vedo dai log che il codice non passa per nessun distruttore e la libreria non viene scaricata.
Sembra che al momento della disconnessione venga fatto un brutale TerminateProcess da parte di Windows.
Come ne esco?
Come posso ricevere un evento di disconnessione da parte di un programma utente?