Platform SDK: DirectX |
DirectInputDevice.SetCooperativeLevel メソッドは、デバイスのインスタンスに協調レベルを設定する。協調レベルは、このインスタンスが、同じデバイスのほかのインスタンス、およびシステムのこれ以外の部分との間で、どのように対話するかを決める。
object.SetCooperativeLevel(hwnd As Long, _ flags As CONST_DISCLFLAGS)
次のフラグの組み合わせが有効である。
フラグ | 意味 | 対象 |
---|---|---|
DISCL_NONEXCLUSIVE Or DISCL_BACKGROUND | ほかのアプリケーションは、排他モードまたは非排他モードにあるデバイスを取得できる。このアプリケーションは、データにいつでもアクセスできる。 | すべて。 |
DISCL_NONEXCLUSIVE Or DISCL_FOREGROUND | ほかのアプリケーションは、排他モードまたは非排他モードにあるデバイスを取得できる。このアプリケーションは、フォアグラウンドにあるときのみデータにアクセスできる。 | すべて。 |
DISCL_EXCLUSIVE Or DISCL_BACKGROUND | ほかのアプリケーションは、非排他モードにあるデバイスを取得できる。このアプリケーションは、データにいつでもアクセスできる。 | ジョイスティック。 |
DISCL_EXCLUSIVE Or DISC_FOREGROUND | ほかのアプリケーションは、非排他モードにあるデバイスを取得できる。このアプリケーションは、フォアグラウンドにあるときのみデータにアクセスできる。 | すべて。マウスの場合、有効だが Windows はカーソルを表示できない。 |
失敗すればエラーが発生し、Err.Number に次のいずれかのエラー コードが設定される。
DIERR_INVALIDPARAM |
DIERR_INVALIDHANDLE |
2 つのアプリケーション (または同一アプリケーションの 2 つのインスタンス) が同時に 1 つのデバイスを排他モードで取得することはできない。これは主にセキュリティ面での機能である。これにより、1 つのアプリケーションからの入力が、同時に実行されている別のアプリケーションに流れることはない。
システム マウスが排他モードで取得されると、マウス ポインタは、デバイスが解放されるまで画面から消去される。
アプリケーションは、DirectInputDevice.Acquire メソッドでデバイスを取得する前に、このメソッドを呼び出す必要がある。