<Return[O]><Top>

OpenDesktop

Declare Function Api_OpenDesktop& Lib "user32" Alias "OpenDesktopA" (ByVal lpszDesktop$, ByVal dwFlags&, ByVal fInherit%, ByVal dwDesiredAccess&)

Declare Function OpenDesktop Lib "user32" Alias "OpenDesktopA" (ByVal lpszDesktop As String, ByVal dwFlags As Long, ByVal fInherit As Boolean, ByVal dwDesiredAccess As Long) As Long

既存のデスクトップのハンドルを取得する。デスクトップとは、ウィンドウステーションオブジェクト内にある安全なオブジェクトのことである。デスクトップは 1 つの論理的なディスプレイ表面(display surface)と、ウィンドウ、メニュー、フックを備えている。

パラメータ
lpszDesktop
    [入力]開くデスクトップの名前を表す、NULL で終わる文字列へのポインタを指定する。

    デスクトップ名は、大文字と小文字を区別しない。
dwFlags
    [入力]呼び出し側アプリケーションが、デスクトップ上で他のアプリケーションと協調動作する方法を指定する。

    0 または次の値を指定する。

    値                                                         

説明                                                                                                                         

    DF_ALLOWOTHERACCOUNTHOOK

 

他のアカウント内で動作するプロセスが、デスクトップ上でこのプロセスに対してフックを設定することを認める。

fInherit
    [入力]新しいプロセスの作成時に返されたハンドルを継承するかどうかを指定する。この値が TRUE の場合、新しいプロセスにこのハン

    ドルを継承する。
dwDesiredAccess
    [入力]返されたハンドルのデスクトップ上でのアクセス権を指定する。このパラメータには、READ_CONTROL や WRITE_DAC などの

    標準的なアクセス権や、次のデスクトップ固有のアクセス権を任意の組み合わせて指定することができる。

    値                                                    

説明                                                                                                     

    DESKTOP_CREATEMENU

デスクトップ上にメニューを作成するために必要である。

    DESKTOP_CREATEWINDOW

デスクトップ上にウィンドウを作成するために必要である。

    DESKTOP_ENUMERATE

デスクトップを列挙するために必要である。

    DESKTOP_HOOKCONTROL

何らかのウィンドウフックを確立するために必要である。

    DESKTOP_JOURNALPLAYBACK

デスクトップ上でジャーナルを再生するために必要である。

    DESKTOP_JOURNALRECORD

デスクトップ上でジャーナルを記録するために必要である。

    DESKTOP_READOBJECTS

デスクトップ上でオブジェクトを読み取るために必要である。

    DESKTOP_SWITCHDESKTOP

SwitchDesktop 関数を使ってデスクトップをアクティブ化するために必要である。

    DESKTOP_WRITEOBJECTS

デスクトップ上でオブジェクトを書き込むために必要である。

 

戻り値
    関数が成功すると、開かれたデスクトップのハンドルが返る。

    このハンドルの使用後は、CloseDesktop 関数を呼び出してこのハンドルを閉じる。
    関数が失敗すると、NULL が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    呼び出し側プロセスに、プロセスの作成時にシステムが割り当てたウィンドウステーションか、SetProcessWindowStation 関数を使って設定

    したウィンドウステーションを関連付けておかなければならない。
    dwDesiredAccess パラメータに、デスクトップオブジェクトのセキュリティ記述子にアクセスするための標準的なアクセス権である

    READ_CONTROL、WRITE_DAC、WRITE_OWNER のいずれかをセットしている場合、DESKTOP_READOBJECTS アクセス権と

    DESKTOP_WRITEOBJECTS アクセス権もセットしなければならない。