共用方式為


桌面的線程連線

進程連接到視窗月臺之後,系統會將桌面指派給進行連線的線程。 系統會根據下列規則決定要指派給線程的桌面:

  1. 如果線程已呼叫 SetThreadDesktop 函式,它會連線到指定的桌面。
  2. 如果線程未呼叫 SetThreadDesktop,它會連線到繼承自父進程的桌面。
  3. 如果線程未呼叫 SetThreadDesktop 且未繼承桌面,系統會嘗試開啟以MAXIMUM_ALLOWED存取並連線到桌面,如下所示:
    • 如果在建立進程時所使用的 STARTUPINFO 結構 lpDesktop 成員中指定桌面名稱,線程就會連線到指定的桌面。
    • 否則,線程會連接到進程所連線之視窗月臺的預設桌面。

呼叫 closeDesktop 函式,無法關閉此連線程式期間指派的桌面。

當進程連線到桌面時,系統會搜尋進程的句柄數據表中是否有繼承的句柄。 系統會使用它找到的第一個桌面句柄。 如果您想要讓子進程連線到特定的繼承桌面,您必須確定唯一想要的句柄標示為可繼承。 如果子進程繼承多個桌面句柄,則未定義桌面連線的結果。

將進程連接到桌面時,系統開啟的桌面句柄無法繼承。

處理與視窗月臺的連線