<Return[O]><Top>

OpenInputDesktop

Declare Function Api_OpenInputDesktop& Lib "user32" Alias "OpenInputDesktop" (ByVal dwFlags&, ByVal fInherit%, ByVal dwDesiredAccess&)

Declare Function OpenInputDesktop Lib "user32" Alias "OpenInputDesktop" (ByVal dwFlags As Long, ByVal fInherit As Boolean, ByVal dwDesiredAccess As Long) As Long

ユーザー入力を受け取るデスクトップのハンドルを取得する。ログオンしているユーザーに関連付けられているウィンドウステーション上の 1 つのデスクトップが、この入力デスクトップになる。

パラメータ
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 関数を使って設定

    したウィンドウステーションを関連付けておかなければならない。呼び出し側プロセスに関連付けられるウィンドウステーションには、入力を受

    け取る能力が必要である。
    アプリケーションでは SwitchDesktop 関数を使うと、入力デスクトップを変更することができる。
    dwDesiredAccess パラメータに、デスクトップオブジェクトのセキュリティ記述子にアクセスするための標準的なアクセス権である

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

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