我正在研究在Windows 2003上運行的基於終端服務的系統。它由用戶啓動程序的桌面替換應用程序組成。它也有一個註銷按鈕。當用戶註銷時,必須發生兩件事情。首先,他從Windows註銷。然後存儲過程被稱爲清理用戶數據庫狀態。這幾乎可以正常工作,但是對於一種情況,那就是用戶取消註銷事件時。典型場景: 1-用戶登錄,啓動MS Word,編輯文檔,不保存。 2 - 用戶然後按下注銷按鈕。 3- MS Word對此做出反應,要求用戶保存他的更改。 4 - 用戶按下取消。如何捕獲在Windows Server 2003中取消註銷
此時桌面應用程序可能已經調用存儲過程來清理數據庫狀態。如何在桌面應用程序中捕獲此行爲?是否有消息表明最終會話操作已取消?
我的問題有意義嗎?噢,所有的應用程序都是用Delphi 7編寫的,但我也用C,C++和C#工作,所以在這些語言中的答案也很讚賞。
是否允許您在該機器上運行服務? ......還有,你是否試圖用基於羣組的註銷腳本啓動存儲過程? – DarkSquirrel42 2013-04-25 08:47:53
我認爲你應該嘗試檢測實際的註銷,並假設其他方式取消:當向Word發送WM_QUERYENDSESSION消息時發生Word取消;如果註銷被取消,系統將永遠不會發送「WM_ENDSESSION」消息。 – Medinoc 2013-04-25 08:55:13
@Medinoc:MSDN文檔聲明:「當應用程序對WM_QUERYENDSESSION返回TRUE時,它會收到WM_ENDSESSION消息,並且它將被終止,無論其他應用程序如何響應WM_QUERYENDSESSION消息。」這意味着我的桌面替換應用程序將收到WM_ENDSESSION,即使它被取消了。 – Pelle 2013-04-25 12:33:15