[英]How to capture logoff cancelled in windows server 2003
我正在研究在Windows 2003上運行的基於終端服務的系統。它包含一個桌面替換應用程序,用戶可以從中啟動程序。 它還有一個注銷按鈕。 當用戶注銷時,必須發生兩件事。 首先,他退出了Windows。 然后調用存儲過程來清理用戶數據庫狀態。 這幾乎可以正常工作,但對於一種情況,那就是用戶取消注銷事件。 典型場景:1-用戶登錄,啟動MS Word,編輯文檔,不保存。 2 - 然后用戶按下注銷按鈕。 3- MS Word對此做出反應,要求用戶保存他的更改。 4 - 用戶按下取消。
此時,桌面應用程序可能已經調用了存儲過程來清理數據庫狀態。 如何在桌面應用程序中捕獲此行為? 是否有消息說結束會話操作被取消了?
我的問題是否有意義?
哦,所有的應用程序都是用Delphi 7編寫的,但我也在C,C ++和C#中工作,所以這些語言的答案也很受歡迎。
如果您的用戶狀態邏輯位於shell替換中,那么請考慮應用程序重新設計:從會話管理中解除自定義Shell。
例如:在服務中移動用戶狀態邏輯。 在此服務寄存器中,用於RDS通知:WTS_SESSION_LOGON / WTS_SESSION_LOGOFF。
我認為WTS_SESSION_LOGOFF 僅在實際注銷時發送,即如果用戶單擊Word中的“取消”按鈕,則Windows將知道用戶實際上沒有注銷,並且OS不會發送WTS_SESSION_LOGOFF(這是未經測試的,但聽起來合乎邏輯)。
這樣你就不會處理WM_ENDSESSION / WM_QUERYENDSESSION的東西了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.