2017-05-30 45 views
0

我有一個在Winforms應用程序中使用的代碼。 Windows服務中也使用相同的代碼(作爲Windows服務運行的exe)。代碼抓住ICON的手柄。但是我發現,在Task Mangaer(和GDI View)中,當我運行Winforms Application時,應用程序顯示GDI計數。但是當我通過Windows Service運行代碼時,任務管理器中的服務實例沒有顯示任何GDI計數。那麼,這是否意味着Windows Service無法保存GDI句柄?如果是這樣,那麼代碼是如何工作的,那麼在Windows服務中,在句柄上運行的代碼是如何工作的。GDI在Windows服務和交互式應用程序中的句柄

+0

任務管理器無法檢索另一個會話中的進程的GDI計數,因此它將其顯示爲零。 –

+0

另一個會話是什麼意思?服務也使用我的憑據運行。 –

+0

Windows中的每個進程都在特定的「遠程桌面會話」中運行,也稱爲「終端服務會話」,有時也稱爲「會話」,儘管這可能不明確。請參閱任務管理器中的「會話ID」列。如果兩個不同的用戶同時登錄,它們將處於不同的會話中,並且您會發現每個用戶都可以看到他們自己的進程的GDI計數,但不會看到其他用戶的GDI計數。 (在Windows 10中,您需要以管理員身份運行任務管理器以查看其他用戶的進程。) –

回答