<Return[G]><Top>

GetThreadDesktop

Declare Function Api_GetThreadDesktop& Lib "user32" Alias "GetThreadDesktop" (ByVal dwThread&)

Declare Function GetThreadDesktop Lib "user32" Alias "GetThreadDesktop" (ByVal dwThread As Long) As Long

指定されたスレッドに関連付けられているデスクトップのハンドルを取得する。

パラメータ
dwThreadId
    [入力]デスクトップハンドルの取得に使うスレッドのハンドルを指定する。GetCurrentThreadId 関数と CreateProcess 関数は、スレッド

    の識別子を返す。

戻り値
    関数が成功すると、指定されたスレッドに関連付けられているデスクトップのハンドルが返る。返されたハンドルを閉じるために CloseDesktop

    関数を呼び出す必要はない。
    関数が失敗すると、NULL が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    スレッドの作成時に、システムは 1 つのデスクトップをそのスレッドに関連付ける。スレッドは SetThreadDesktop 関数を使うと、自らのデス

    クトップを変更できる。スレッドに関連付けられているデスクトップは、スレッドのプロセスに関連付けられているウィンドウステーション上に存在

    するものでなければならない。
    この関数が返したハンドルは、呼び出し側プロセスで、GetUserObjectInformation 関数、GetUserObjectSecurity 関数、

    SetUserObjectInformation 関数、SetUserObjectSecurity 関数を呼び出す際に利用できる。
    Windows 95/98:システムは複数のデスクトップをサポートしていないので、GetThreadDesktop 関数は常に同じ値を返す。
    Windows NT 3.51:サービスがデスクトップとの相互作用を行う USER 関数または GDI 関数を呼び出すまでは、サービスアプリケーショ

    ンはウィンドウステーションとデスクトップのどちらにも関連付けられていない。サービスにデスクトップが関連付けられていない状態でサービス

    がGetThreadDesktop 関数を呼び出すと、NULL が返る。サービスがデスクトップとの相互作用を行った後でこの関数を呼び出すと、有効

    なデスクトップハンドルが返る。
    Windows NT/2000:サービスアプリケーションを作成すると、1 つのウィンドウステーションとデスクトップが関連付けられるので、サービス

    をウィンドウステーションやデスクトップに関連付けるために USER 関数や GDI 関数を呼び出す必要はない。