GetUserObjectInformation ウィンドウステーションおよびデスクトップの情報を取得

Cの宣言:

BOOL GetUserObjectInformation(
	HANDLE hHandle,
	int InfoType,
	PVOID Buf,
	DWORD BufLength,
	DWORD BytesWritten);

説明:

hHandleで指定したウィンドウステーションまたはデスクトップの情報を取得する。

この関数はWindows NT 3.51以降で使用可能。

引数の意味は以下の通り。
hHandle (IN) 情報の取得もとのウィンドウステーションまたはデスクトップのハンドル。
InfoType (IN) 取得する情報の種類を指定するフラグ。後述の表を参照。
Buf (OUT) 取得結果の情報。
BufLength (IN) Bufのサイズ。
BytesWritten (OUT) 返された情報のバイト数、Bufに必要なサイズが返される。

InfoTypeに指定可能なフラグは、以下のいずれか1つである。
UOI_FLAGS USEROBJECTFLAGS構造体型のデータが返される。
UOI_NAME hHandleで指定したウィンドウステーションまたはデスクトップの名前が返される。
UOI_TYPE hHandleで指定したウィンドウステーションまたはデスクトップの型を表す文字列("WindowStation"や"Desktop"など)が返される。
UOI_USER_SID hHandleで指定したウィンドウステーションまたはデスクトップに関連付けられているユーザのSIDが返される。

戻り値は、関数の実行に成功したか否かを表す真偽値である。

Cのサンプル:

現在のプロセスおよびスレッドに関連付けられているウィンドウステーションとデスクトップの名前を表示する。
/* ウィンドウステーション名及びデスクトップ名表示 */
void DispWinStaInfo()
{
	HDESK hDesk;
	HWINSTA hWinSta;
	char DeskName[100];
	char WinStaName[100];
	char ResultMsg[1000];
	DWORD WriteByte;

	/* 現在のプロセスに関連付けられているウィンドウステーションおよびデスクトップを取得 */
	hWinSta = GetProcessWindowStation();
	hDesk = GetThreadDesktop(GetCurrentThreadId());

	/* ウィンドウステーション名およびデスクトップ名を取得 */
	GetUserObjectInformation(hWinSta, UOI_NAME, WinStaName, 100, &WriteByte);
	GetUserObjectInformation(hDesk,   UOI_NAME, DeskName,   100, &WriteByte);

	/* 取得結果の表示 */
	wsprintf(ResultMsg, "WindowStation Name: %s\n" "Desktop Name: %s\n", WinStaName, DeskName);
	MessageBox(NULL, ResultMsg, "DispWinStaInfo", MB_OK);
}

(original text:1998/12/25 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。