プロセス。
- BUGS:
- よく理解もせずに組むとこうなるよ、っていう典型。
ワケ分からん。
class ProcessException: etc.negui.system.exception.NeGuiException;
struct PROCESSINFORMATION;
const Process process();
void process(in Process process);
struct STARTUPINFORMATION;
void initialize();
const POINT position();
void position(ref const POINT Position
);
const SIZE size();
void size(ref const SIZE Size
);
const SIZE sizeCharacter();
void sizeCharacter(ref const SIZE Size
);
enum FLAG;
USESHOWWINDOW
USESIZE
dwXSize、dwYSize メンバを有効にします。
USEPOSITION
USECOUNTCHARS
dwXCountChars、dwYCountChars メンバを有効にします。
USEFILLATTRIBUTE
USESTDHANDLES
hStdInput、hStdOutput、hStdError メンバを有効にします。
RUNFULLSCREEN
作成するプロセスがコントロール アプリケーションのとき、コンソール ウィンドウをフルスクリーンで表示します(WindowsNT系OSのみ)。
FORCEONFEEDBACK
アプリケーション起動時に砂時計カーソルを利用します。
FORCEOFFFEEDBACK
アプリケーション起動時にカーソル変更を行いません。
class Process: etc.negui.system.raii.HandleRaii;
protected void Kill();
const HANDLE opCall();
protected PROCESSINFORMATION* Information;
PROCESSINFORMATION info();
enum CREATE;
BREAKAWAY_FROM_JOB
Windows 2000:あるプロセスが特定のジョブに関連付けられている場合でも、その子プロセスをそのジョブに関連付けません。呼び出し側プロセスがどのジョブにも関連付けられていない場合、このフラグには意味はありません。呼び出し側が特定のオブジェクトに関連付けられている場合、そのオブジェクトは JOBOBJECT_BASIC_LIMIT_INFORMATION 構造体の LimitFlags メンバで JOB_OBJECT_LIMIT_BREAKAWAY_OK を指定しなければなりません。さもないと、CreateProcess 関数は失敗します。
DEFAULT_ERROR_MODE
新しいプロセスは、呼び出し側プロセスのエラーモードを継承しません。代わりに、CreateProcess 関数は新しいプロセスに、現在の既定のエラーモードを割り当てます。アプリケーションは 関数を呼び出すことにより、現在の既定のエラーモードを設定できます。マルチスレッド化されたシェルアプリケーションが、ハードエラーを無効にして動作する場合、このフラグは特に役立ちます。CreateProcess 関数の既定の動作では、新しいプロセスは、呼び出し側のエラーモードを継承します。このフラグを指定すると、この既定の動作は無効になります。
NEW_CONSOLE
新しいプロセスは、親のコンソールを継承せず、新しいコンソールを持ちます。DETACHED_PROCESS フラグと同時に指定することはできません。
NEW_PROCESS_GROUP
新しいプロセスを、新しいプロセスグループのルートプロセスにします。このルートプロセスのすべての子孫プロセスは、このプロセスグループを形成します。新しいプロセスグループのプロセス識別子は、lpProcessInformation パラメータに格納されたプロセス識別子と同じ値です。 関数はプロセスグループを使って、Ctrl+C または Ctrl+Break の信号を、複数のコンソールプロセスからなるグループへ送信します。
NO_WINDOW
Windows NT/2000:このフラグは、コンソールアプリケーションを起動する場合にのみ有効です。このフラグを指定すると、コンソールウィンドウなしでアプリケーションを実行します。
SEPARATE_WOW_VDM
Windows NT/2000:このフラグは、16 ビット版 Windows ベースのアプリケーションを起動する場合にのみ有効です。このフラグを指定すると、新しいプロセスはプライベート VDM(仮想 DOS マシン)内で動作します。既定では、16 ビット版 Windows ベースのすべてのアプリケーションが 1 つの共有 VDM 内で動作します。これらのアプリケーションを個別に動作させると、どれか 1 つのアプリケーションがクラッシュした場合でも、1 つの VDM が終了するだけで済むという利点があります。他の VDM 内で動作している他のすべてのプログラムは、正常に動作を続けます。また、16 ビット版 Windows ベースのアプリケーションを個別の VDM 内で動作させると、個別の入力キューを割り当てることができます。これは、1 つのアプリケーションが瞬間的に応答を停止した場合でも、他の VDM 内で動作しているアプリケーションは引き続き入力を受け取れることを意味します。逆に、各アプリケーションを個別の VDM 内で動作させると、多くのメモリを余分に消費するという欠点があります。16 ビット版アプリケーションを個別の VDM で動作させるようユーザーが要求した場合にのみ、このフラグを使うべきです。
SHARED_WOW_VDM
Windows NT/2000:このフラグは、16 ビット版 Windows ベースのアプリケーションを起動する場合にのみ有効です。WIN.INI ファイルの [Windows] セクションの DefaultSeparateVDM スイッチが TRUE に設定されている場合、このフラグを指定すると、CreateProcess 関数はそのスイッチを無効にし、新しいプロセスを共有 VDM 内で動作させます。
SUSPENDED
プライマリスレッドをサスペンド状態にして、新しいプロセスを作成します。ResumeThread 関数を呼び出すまで、そのスレッドを開始させません。
UNICODE_ENVIRONMENT
lpEnvironment パラメータが指す環境ブロックの形式を指定します。このフラグを指定すると、その環境ブロックは Unicode 文字を使います。このフラグを指定しなかった場合、ANSI 文字を使います。
DEBUG_PROCESS
このフラグを指定すると、呼び出し側プロセスをデバッガ、新しいプロセスをデバッグ対象として扱います。システムは、デバッグ対象のプロセス内で発生するすべてのデバッグイベントを呼び出し側スレッドへ通知します。このフラグを指定してプロセスを作成すると、呼び出し側スレッド(CreateProcess 関数を呼び出したスレッド)だけが 関数を呼び出せます。Windows 95/98:新しいプロセスが 16 ビット版アプリケーションの場合、このフラグは有効ではありません。
DEBUG_ONLY_THIS_PROCESS
呼び出し側プロセスがデバッグ対象であるときに、このフラグを指定せずに CreateProcess 関数を呼び出すと、呼び出し側プロセスを扱っているデバッガは、新しいプロセスもデバッグ対象とします。呼び出し側プロセスがデバッグ対象ではない場合、デバッグ関連の動作は発生しません。
DETACHED_PROCESS
コンソールプロセスを対象としたフラグであり、新しいプロセスに、親プロセスのコンソールへのアクセスを許可しません。新しいプロセスは、 関数を使って新しいコンソールを作成できます。CREATE_NEW_CONSOLE フラグと同時に指定することはできません。
enum PRIORITY;
NORMAL
通常クラス。特別なスケジューリングを必要としない、一般的なプロセスであることを指定します。
IDLE
アイドルクラス。システムがアイドル状態のときにだけスレッドを実行するプロセスであることを指定します。アイドルクラスの優先権は子プロセスに引き継がれます。
HIGH
優先クラス。すぐに実行されなければならないタイムクリティカルなタスクを実行するプロセスであることを指定します。この優先度クラスのプロセスに属するスレッドは、通常クラスやアイドルクラスのプロセスに属するスレッドのより優先して実行されます。このクラスのアプリケーションはほぼすべての CPU 空き時間を占有可能となるため、このクラスを設定する場合は十分に注意する必要があります。
REALTIME
リアルタイムクラス。最も高い優先順位クラスを持つプロセスであることを指定します。この優先度クラスのプロセスに属するスレッドは、他のすべてのプロセス(システムの重要なタスクを実行するOS のプロセスも含む)に属するスレッドのより優先して実行されます。
BELOW_NORMAL
Windows 2000/XP: IDLE_PRIORITY_CLASS 以上で NORMAL_PRIORITY_CLASS 以下の優先度を持つことを示します。
ABOVE_NORMAL
Windows 2000/XP: NORMAL_PRIORITY_CLASS 以上で HIGH_PRIORITY_CLASS 以下の優先度を持つことを示します。
this(HANDLE Handle
, bool Suicide
);
this(HANDLE hProcess
, HANDLE hThread
, bool Suicide
);
this(in Text ApplicationName
, in Text CommandLine
, in Text WorkFolder
, const SECURITY* ProcessSecurity
, const SECURITY* ThreadSecurity
, bool Inheritance
, PRIORITY Priority
, CREATE Create
, const TEXTNULLLIST* TextNullList
, ref const STARTUPINFORMATION StartupInformation
);
this(in Text ApplicationName
, in Text CommandLine
, in Text WorkFolder
, ref const SECURITY ProcessSecurity
, ref const SECURITY ThreadSecurity
, bool Inheritance
, PRIORITY Priority
, CREATE Create
, ref const TEXTNULLLIST TextNullList
, ref const STARTUPINFORMATION StartUpInfomation
);
this(in Text ApplicationName
, in Text CommandLine
, in Text WorkFolder
, ref const STARTUPINFORMATION StartUpInfomation
);
const DWORD exitCode();
const PRIORITY priority();
bool priority(PRIORITY Priority
);
class ExecuteException: etc.negui.process.process.ProcessException;
struct EXECUTEINFORMATION;
void initialize();
enum MASK;
CLASSKEY
CLASSNAME
CONNECTMETDRV
ドライブと接続する(lpFileはネットワーク上のUNCパス名と接続する)
DOENVSUBST
lpDirectory or lpFileで与えられる文字列内の環境変数を展開する
FLAG_DDEWAIT
FLAG_NO_UI
エラー発生時にはエラーメッセージボックスを表示しない
HOTKEY
ICON
IDLIST
lpIDListで与えられるITEMIDリストを使用する
INVOKEIDLIST
アプリケーションを起動するためlpIDListで与えられるITEMIDリストを使用する(lpIDListが0のとき新しいITEMIDリストを作成する)
NOCLOSEPROCESS
ShellExecuteEx()関数終了後、プロセスの実行を継続する
const NeGui owner();
void owner(in NeGui Owner
);
enum OPERATION;
EDIT
エディタを起動し、編集のためにドキュメントを開きます。 lpFile メンバがドキュメントファイルでない場合は、関数は失敗します。
OPEN
lpFile メンバで指定された実行可能ファイル、ドキュメントファイル、フォルダを開きます。
PRINT
lpFile メンバで指定されたドキュメントファイルを印刷します。 lpFile メンバがドキュメントファイルでない場合は、関数は失敗します。
EXPLORER
pFile メンバで指定されたフォルダをエクスプローラで開きます。
PROPERTIES
FIND
指定されたディレクトリから開始される検索を実行します。
DEFAULT
void operation(OPERATION Operation
);
enum ERROR;
FNF
PNF
ACCESSDENIED
OOM
SHARE
ASSOCINCOMPLETE
DDETIMEOUT
DDE トランザクションがタイムアウトにより中断されました。
DDEFAIL
DDEBUSY
他の DDE トランザクションが処理されていたため DDE トランザクションが終了できませんでした。
NOASSOC
DLLNOTFOUND
static bool isError(HINSTANCE Instance
);
const HOTKEYVALUE hotkey();
void hotkey(ref const HOTKEYVALUE HotKeyValue
);
const Icon icon();
void icon(in Icon icon);
const Monitor monitor();
void monitor(in Monitor monitor);
const Process process();
void process(in Process process);
HINSTANCE run();
設定値の実行
- Throws:
- 実行に失敗した場合はExecuteException。