TNB Library
クラス | 公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
CProcessHandle クラス

プロセスハンドル管理クラス [詳解]

#include <TnbProcessHandle.h>

公開メンバ関数

void Attach (HANDLE hProcess, HANDLE hThread)
 [設定] アタッチ. [詳解]
 
 CProcessHandle (void)
 コンストラクタ [詳解]
 
bool Create (LPCTSTR lpszCommand, CPipe *pInputPipe, CPipe *pOutputPipe, CPipe *pErrorPipe=NULL, bool boIsShowWindow=true)
 [実行] パイプ指定プロセス実行. [詳解]
 
bool Create (LPCTSTR lpszExecName, LPCTSTR lpszCommand, bool boIsShowWindow=true)
 [実行] プロセス実行 [詳解]
 
bool Create (LPCTSTR lpszExecName, LPCTSTR lpszCommand, STARTUPINFO &si)
 [実行] プロセス実行 [詳解]
 
void Detach (void)
 [設定] デタッチ. [詳解]
 
LONGLONG GetExitCode (void) const
 [取得] プロセス終了コード取得 [詳解]
 
HANDLE GetProcessHandle (void) const
 [取得] プロセスハンドル取得 [詳解]
 
DWORD GetProcessId (void) const
 [取得] プロセスID取得 [詳解]
 
HANDLE GetThreadHandle (void) const
 [取得] スレッドハンドル取得 [詳解]
 
bool IsAlive (void) const
 [確認] 起動確認. [詳解]
 
 operator HANDLE (void) const
 [取得] プロセスハンドル取得 [詳解]
 
bool Terminate (UINT uExitCode=0)
 [通知] 強制終了. [詳解]
 
DWORD WaitForExit (DWORD dwWait=INFINITE)
 [処理] 終了待ち. [詳解]
 

静的公開メンバ関数

static bool EnumProcesses (CWorkMemT< DWORD > &_ids)
 [取得] プロセスID一覧取得 [詳解]
 
static bool EnumProcesses (CWorkMemT< DWORD > &_ids, LPCTSTR lpszProcessName)
 [取得] プロセスID一覧取得 指定のプロセス名のプロセスIDを起動が新しい順に一覧します。 [詳解]
 
static CVectorT< PROCESSENTRY32 > EnumProcessesEntry (void)
 [取得] プロセス情報一覧取得 [詳解]
 
static bool GetProcessName (CSimpleStr &_name, DWORD processId, ::FILETIME *pCreateTime=NULL)
 [取得] プロセス名取得 [詳解]
 
static bool TerminateProcessId (DWORD processId, UINT uExitCode=0)
 [処理] プロセス終了. [詳解]
 

詳解

プロセスハンドル管理クラス

プロセスハンドルを一つ管理します。
プロセス実行もサポートします。
必要ファイル
TnbProcessHandle.h
日付
07/01/24 新規作成
11/11/10 プロセスIDも記憶するようにした
12/05/11 EnumProcessesEntry() 新規。

TnbProcessHandle.h54 行目に定義があります。

構築子と解体子

◆ CProcessHandle()

CProcessHandle ( void  )

コンストラクタ

TnbProcessHandle.h59 行目に定義があります。

関数詳解

◆ Attach()

void Attach ( HANDLE  hProcess,
HANDLE  hThread 
)

[設定] アタッチ.

指定のハンドルを管理するようにします。

覚え書き
プロセスID は管理しません。
引数
hProcessプロセスハンドル
hThreadスレッドハンドル

TnbProcessHandle.h177 行目に定義があります。

◆ Create() [1/3]

bool Create ( LPCTSTR  lpszCommand,
CPipe pInputPipe,
CPipe pOutputPipe,
CPipe pErrorPipe = NULL,
bool  boIsShowWindow = true 
)

[実行] パイプ指定プロセス実行.

覚え書き
stdin stdout strerr を指定します。
引数
lpszCommandコマンド。実行ファイル名とオプションを記述。
pInputPipeプロセスへの入力用パイプ(stdin)を指定します。 Open してある必要があります。 また、ここで指定したパイプはプロセス終了まで 破棄、および Stop しないようにしてください。
pOutputPipeプロセスからの出力用パイプ(stdout)を指定します。 Open してある必要があります。 また、ここで指定したパイプはプロセス終了まで 破棄、および Stop しないようにしてください。
pErrorPipeプロセスからのエラー出力用パイプ(stderr)を指定します。 Open してある必要があります。 また、ここで指定したパイプはプロセス終了まで 破棄、および Stop しないようにしてください。
省略するか、NULLを指定すると、 pOutoutPipe を使用します。
boIsShowWindowfalse ならWindowを非表示状態で起動させます。
戻り値
true成功
false失敗(パイプは一つでもOpenしていない場合も失敗します)。

TnbProcessHandle.h283 行目に定義があります。

◆ Create() [2/3]

bool Create ( LPCTSTR  lpszExecName,
LPCTSTR  lpszCommand,
bool  boIsShowWindow = true 
)

[実行] プロセス実行

引数
lpszExecName実行ファイル名
lpszCommandコマンドライン
boIsShowWindowfalse ならWindowを非表示状態で起動させます。
戻り値
true成功
false失敗

TnbProcessHandle.h230 行目に定義があります。

◆ Create() [3/3]

bool Create ( LPCTSTR  lpszExecName,
LPCTSTR  lpszCommand,
STARTUPINFO &  si 
)

[実行] プロセス実行

引数
lpszExecName実行ファイル名
lpszCommandコマンドライン
siスタート情報
戻り値
true成功
false失敗

TnbProcessHandle.h204 行目に定義があります。

◆ Detach()

void Detach ( void  )

[設定] デタッチ.

管理ハンドルを解放します(複製されている場合、ハンドルは Closeされません)。

TnbProcessHandle.h188 行目に定義があります。

◆ EnumProcesses() [1/2]

static bool EnumProcesses ( CWorkMemT< DWORD > &  _ids)
static

[取得] プロセスID一覧取得

覚え書き
マクロ "_TnbPROCESS_EnumProcesses_ENABLE" が定義されていないと使用できません。
引数
[out]_idsプロセスID一覧
戻り値
true成功。 _ids に結果が格納されます。
false失敗。

TnbProcessHandle.h377 行目に定義があります。

◆ EnumProcesses() [2/2]

static bool EnumProcesses ( CWorkMemT< DWORD > &  _ids,
LPCTSTR  lpszProcessName 
)
static

[取得] プロセスID一覧取得 指定のプロセス名のプロセスIDを起動が新しい順に一覧します。

覚え書き
マクロ "_TnbPROCESS_EnumProcesses_ENABLE" が定義されていないと使用できません。
引数
[out]_idsプロセスID一覧
[in]lpszProcessNameプロセス名。 'abc.exe' のように、フル名を指定すること
戻り値
true成功。 _ids に結果が格納されます。
false失敗。

TnbProcessHandle.h400 行目に定義があります。

◆ EnumProcessesEntry()

static CVectorT< PROCESSENTRY32 > EnumProcessesEntry ( void  )
static

[取得] プロセス情報一覧取得

覚え書き
マクロ "_TnbPROCESS_EnumProcesses_ENABLE" が定義されていないと使用できません。
戻り値
一覧

TnbProcessHandle.h444 行目に定義があります。

◆ GetExitCode()

LONGLONG GetExitCode ( void  ) const

[取得] プロセス終了コード取得

戻り値
-1エラー。
0以上終了コード。

TnbProcessHandle.h160 行目に定義があります。

◆ GetProcessHandle()

HANDLE GetProcessHandle ( void  ) const

[取得] プロセスハンドル取得

戻り値
INVALID_HANDLE_VALUE管理ハンドルなし
INVALID_HANDLE_VALUE以外プロセスハンドル

TnbProcessHandle.h129 行目に定義があります。

◆ GetProcessId()

DWORD GetProcessId ( void  ) const

[取得] プロセスID取得

覚え書き
Attach() で設定した場合、プロセスID は管理しません。
戻り値
0管理IDなし
0以外プロセスID

TnbProcessHandle.h150 行目に定義があります。

◆ GetProcessName()

static bool GetProcessName ( CSimpleStr _name,
DWORD  processId,
::FILETIME pCreateTime = NULL 
)
static

[取得] プロセス名取得

覚え書き
マクロ "_TnbPROCESS_EnumProcesses_ENABLE" が定義されていないと使用できません。
引数
[out]_nameプロセス名
[in]processIdプロセスID
[out]pCreateTimeそのプロセスの作成時間が格納されます。要らない場合 NULL を指定します。
戻り値
true成功。 _name に結果が格納されます。
false失敗。

TnbProcessHandle.h345 行目に定義があります。

◆ GetThreadHandle()

HANDLE GetThreadHandle ( void  ) const

[取得] スレッドハンドル取得

戻り値
INVALID_HANDLE_VALUE管理ハンドルなし
INVALID_HANDLE_VALUE以外スレッドハンドル

TnbProcessHandle.h139 行目に定義があります。

◆ IsAlive()

bool IsAlive ( void  ) const

[確認] 起動確認.

管理しているプロセスが生きているか確認します。

戻り値
true生きている。
falseいない。

TnbProcessHandle.h104 行目に定義があります。

◆ operator HANDLE()

operator HANDLE ( void  ) const

[取得] プロセスハンドル取得

戻り値
INVALID_HANDLE_VALUE管理ハンドルなし
INVALID_HANDLE_VALUE以外プロセスハンドル

TnbProcessHandle.h119 行目に定義があります。

◆ Terminate()

bool Terminate ( UINT  uExitCode = 0)

[通知] 強制終了.

管理しているプロセスをターミネートします。

引数
uExitCode終了コード。省略すると0になります。
戻り値
true成功
false失敗

TnbProcessHandle.h70 行目に定義があります。

◆ TerminateProcessId()

static bool TerminateProcessId ( DWORD  processId,
UINT  uExitCode = 0 
)
static

[処理] プロセス終了.

プロセスID でプロセスを終了できます。 プロセスハンドルがわかる場合、 API の ::TerminateProcess() を使用します。

引数
processIdプロセスID
uExitCode終了コード。省略すると 0 になります。
戻り値
true成功
false失敗

TnbProcessHandle.h325 行目に定義があります。

◆ WaitForExit()

DWORD WaitForExit ( DWORD  dwWait = INFINITE)

[処理] 終了待ち.

管理しているプロセスの終了を待ちます。

引数
dwWaitタイムアウト時間を、ミリ秒で指定します。INFINITE を指定すると終了するまで待ち続けます。
戻り値
WAIT_ABANDONEDプロセスを管理していないか,対象のプロセスが既にない。
WAIT_OBJECT_0終了したことを意味します(既に終了していた場合も含む) 。
WAIT_TIMEOUTタイムアウト時間が経過したことを意味します。

TnbProcessHandle.h88 行目に定義があります。