Win32 API 日本語リファレンス
ホームSystem.JobObjects › JOBOBJECT_BASIC_UI_RESTRICTIONS

JOBOBJECT_BASIC_UI_RESTRICTIONS

構造体
サイズx64: 4 バイト / x86: 4 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
UIRestrictionsClassJOB_OBJECT_UILIMIT4+0+0

ユーザー インターフェイスの制限クラスです。このメンバーには、次の値の 1 つ以上を指定できます。

意味
JOB_OBJECT_UILIMIT_DESKTOP
0x00000040
ジョブに関連付けられたプロセスが、CreateDesktop 関数および SwitchDesktop 関数を使用してデスクトップを作成したり切り替えたりすることを禁止します。
JOB_OBJECT_UILIMIT_DISPLAYSETTINGS
0x00000010
ジョブに関連付けられたプロセスが ChangeDisplaySettings 関数を呼び出すことを禁止します。
JOB_OBJECT_UILIMIT_EXITWINDOWS
0x00000080
ジョブに関連付けられたプロセスが ExitWindows 関数または ExitWindowsEx 関数を呼び出すことを禁止します。
JOB_OBJECT_UILIMIT_GLOBALATOMS
0x00000020
ジョブに関連付けられたプロセスがグローバル アトムにアクセスすることを禁止します。このフラグを使用すると、各ジョブは独自のアトム テーブルを持ちます。
JOB_OBJECT_UILIMIT_HANDLES
0x00000001
ジョブに関連付けられたプロセスが、同じジョブに関連付けられていないプロセスが所有する USER ハンドルを使用することを禁止します。
JOB_OBJECT_UILIMIT_READCLIPBOARD
0x00000002
ジョブに関連付けられたプロセスがクリップボードからデータを読み取ることを禁止します。
JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS
0x00000008
ジョブに関連付けられたプロセスが SystemParametersInfo 関数を使用してシステム パラメーターを変更することを禁止します。
JOB_OBJECT_UILIMIT_WRITECLIPBOARD
0x00000004
ジョブに関連付けられたプロセスがクリップボードにデータを書き込むことを禁止します。

公式ドキュメント

ジョブ オブジェクトに対する基本的なユーザー インターフェイス制限を格納します。

解説(Remarks)

JOB_OBJECT_UILIMIT_HANDLES フラグを指定した場合、ジョブに関連付けられたプロセスがメッセージをブロードキャストすると、そのメッセージは同じジョブに関連付けられたプロセスが所有するトップレベル ウィンドウにのみ送信されます。さらに、フックはジョブに関連付けられたプロセスに属するスレッドにのみインストールできます。

ユーザー インターフェイス制限が設定されたジョブに User ハンドルへのアクセスを許可するには、UserHandleGrantAccess 関数を使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// JOBOBJECT_BASIC_UI_RESTRICTIONS  (x64 4 / x86 4 バイト)
typedef struct JOBOBJECT_BASIC_UI_RESTRICTIONS {
    JOB_OBJECT_UILIMIT UIRestrictionsClass;
} JOBOBJECT_BASIC_UI_RESTRICTIONS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JOBOBJECT_BASIC_UI_RESTRICTIONS
{
    public uint UIRestrictionsClass;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JOBOBJECT_BASIC_UI_RESTRICTIONS
    Public UIRestrictionsClass As UInteger
End Structure
import ctypes
from ctypes import wintypes

class JOBOBJECT_BASIC_UI_RESTRICTIONS(ctypes.Structure):
    _fields_ = [
        ("UIRestrictionsClass", wintypes.DWORD),
    ]
#[repr(C)]
pub struct JOBOBJECT_BASIC_UI_RESTRICTIONS {
    pub UIRestrictionsClass: u32,
}
import "golang.org/x/sys/windows"

type JOBOBJECT_BASIC_UI_RESTRICTIONS struct {
	UIRestrictionsClass uint32
}
type
  JOBOBJECT_BASIC_UI_RESTRICTIONS = record
    UIRestrictionsClass: DWORD;
  end;
const JOBOBJECT_BASIC_UI_RESTRICTIONS = extern struct {
    UIRestrictionsClass: u32,
};
type
  JOBOBJECT_BASIC_UI_RESTRICTIONS {.bycopy.} = object
    UIRestrictionsClass: uint32
struct JOBOBJECT_BASIC_UI_RESTRICTIONS
{
    uint UIRestrictionsClass;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JOBOBJECT_BASIC_UI_RESTRICTIONS サイズ: 4 バイト(x64)
dim st, 1    ; 4byte整数×1(構造体サイズ 4 / 4 切り上げ)
; UIRestrictionsClass : JOB_OBJECT_UILIMIT (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global JOBOBJECT_BASIC_UI_RESTRICTIONS
    #field int UIRestrictionsClass
#endstruct

stdim st, JOBOBJECT_BASIC_UI_RESTRICTIONS        ; NSTRUCT 変数を確保
st->UIRestrictionsClass = 100
mes "UIRestrictionsClass=" + st->UIRestrictionsClass