9.8.1 GetProcessCount (プロセスの起動数を取得する)
- 機能
-
プロセスの起動数を取得します。
- 形式
GetProcessCount ( ProcessName 〔, ProcessIdBuff〕 )
- 指定項目
-
- ProcessName
-
プロセス名を文字列,または値を格納した変数名で指定します。
プロセス名にはフォルダ名や".EXE"などの拡張子を付けないで指定してください。
- ProcessIdBuff
-
プロセスIDを受け取る変数名を指定します。
JP1/Script 06-00以降では,要素数が可変な一次元の配列変数の変数名を指定することもできます。
必要がない場合は省略します。
ProcessNameで指定されたプロセスが複数起動されている場合は,複数のプロセスIDを起動順にソートして,次のどちらかのように格納します。
-
ProcessIdBuffに変数が指定された場合は,複数のプロセスIDをセミコロン(;)で区切った文字列にして格納します。
-
ProcessIdBuffに配列変数が指定された場合は,複数のプロセスIDを先頭の要素から順に一つずつ格納します。格納後,配列変数の要素数はプロセスIDの数に置き換わります。
-
- 説明
-
指定されたプロセスの起動数を取得し,コマンドの実行結果として返します。ProcessIdBuffが指定されている場合はプロセスIDも返します。
指定されたプロセスが起動されていない場合は0を返し,ProcessIdBuffには長さ0の文字列("")を格納します。エラーが発生した場合は長さ0の文字列("")を,コマンドの実行結果として返します。
- 補足
-
-
ローカルシステムアカウントで起動したプロセスについては完全な名前が取得できないというWindowsの仕様上の制限によってGetProcessCountコマンドにローカルシステムアカウントで起動した16文字以上のプロセス名(拡張子を含める)を指定して,ローカルシステムアカウント以外のアカウントから実行した場合,該当するプロセスが起動中にもかかわらず,起動数,およびプロセスIDに値が返らないという現象が起こります。
この現象を回避するためには,ProcessNameに拡張子を含めたプロセス名の15文字までの部分を指定してください。詳細は,例2を参照してください。
-
管理者権限でスクリプトファイルを実行してください。詳細は,「1.8.2 コマンドの動作」を参照してください。
- 重要
-
プロセス名は最大64文字です。
-
- 例1
' プロセス"ABC"のプロセスID一覧を作成する。 Dim pCnt ,pIdBuff ,seppId pCnt = GetProcessCount ( "ABC" ,pIdBuff ) For i = 1 To pCnt seppId = SeparateStr ( pIdBuff ,";" ,i ) Message ( Target_File ,_SCF_+"PIDLIST.TXT" ,seppId ) Next
- 例2
Dim PLName, Pname, PnameWork, Rc, IdBuff PLName ="ABCDEFGHIJKL" Pname = "ABCDEFGHIJKL.exe" ' まず,通常の指定方法(プロセス名を指定)で実行する。 Rc = GetProcessCount(PLName, IdBuff) ' 起動数が0の場合,プロセスがローカルシステムアカウントから ' 起動されている場合を考慮した処理を行う。 If Rc = 0 Then If Len(Pname)> 15 Then PnameWork = Left(Pname, 15) End If Rc = GetProcessCount(PnameWork, IdBuff) End If
- 対象バージョン
-
JP1/Script 05-20以降