2017-09-11 3 views
0

バッチファイルがローカルシェルから実行されたかどうか、またはP4V内でダブルクリックして検出する必要があります。 P4Vが開いているか確認する方法はありますか?PERFORCEセッションが開かれているかどうかを検出するには?

まず、thisの方法では、 でもやっていたと思いますが、いつものように、TIMTOWTDI。何かご意見は?

+1

"from Perforce"とは、P4Vのカスタムツールとして、またはサーバー上のトリガーとして、またはP4EDITOR設定として、または...という意味ですか? –

+0

@SamStaffordファイルとして。 Depotビューでは、バッチファイルに移動してダブルクリックします。 –

+1

これは[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のように聞こえます。 *なぜあなたのスクリプトがGUIで実行されるのか、コマンドラインで実行されるのかを区別する必要がありますか? – jamesdlin

答えて

1

短い回答:いいえ、本当にありません。

長い答え:

あなたがお勧めのようにして、実行中のp4v.exeプロセスをチェックして、偽のそれに試すことができます。しかし、これはP4Vが開いているかどうかだけを伝えます。別のウィンドウでP4Vを開いていて、シェルからバッチファイルを実行した場合(エクスプローラでダブルクリックする、またはcmdプロンプトから実行するなど)、偽陽性になります。

スクリプトがPERFORCEクライアントワークスペース内にあるかどうかを判断することもできます。これは、スクリプトが "p4"を自分のパス上で実行して、それがワークスペース内にあるかどうかを確認することによって可能になる可能性がありますが、設定されているクライアントマシンに依存する正しい接続設定を持つスクリプトの実行環境によって異なります。 (P4Vのみを使用する場合、その接続設定はあなたのスクリプトにすぐにはアクセスできません)、すべてのPERFORCEクライアント・アプリケーションからアクセス可能なP4CONFIGファイルおよび/または "p4 set"を使用してください。

+0

さて、私は最終的に、実行中のスクリプト(cmdプロセスのPIDを返す)の親プロセスのPIDを取得するためのソリューションを用意しました。それから私のスクリプトの本当の親プロセスである、そのcmdプロセスの親プロセスのPIDを取得します。したがって、最後に収集されたPIDのプロセス名が "p4v.exe"の場合、PERFORCEのシナリオになります。そうでない場合、プロセス名が "explorer.exe"の場合はローカルから実行しています。 –

関連する問題