たとえば、rschitプロセスを持つexcell.exeは、Perlを意味します。
質問する
234 次
2 に答える
1
"taskkill /IM excel.exe" へのシステム コールを起動しようとしましたか?
于 2010-09-22T14:10:37.950 に答える
1
これが自動化後に「サーバー モード」に残っているプロセスに関するものである場合はquit
、アプリケーション オブジェクトでメソッドを呼び出すだけで済みます。Perl で開いた Excel ファイルでマクロを実行するにはどうすればよいですか? の回答を編集しました。それを含めます。(ご存知のように、これがオブジェクトであると言えば、そのオブジェクトに関する MSApplication
のドキュメントを読んで、何をしたいのかを理解できると思いました。)
ただし、Windows でプロセスを強制終了するには、taskkill.exe
. taskkill /?
コマンドラインに入力して読むことができます。対応いたしtaskkill /IM excel.exe
ます。
ただし、特定の PID が必要な場合は、tasklist.exe
. (tasklist
コマンド プロンプトで入力して、出力を表示します。詳細については、こちらを参照してtasklist /?
ください。)
以下のコードでは、両方を使用しています。
use strict;
use warnings;
use English qw<$OS_ERROR>;
use File::Spec;
my $sys32dir = File::Spec->catfile( $ENV{SYSTEMROOT}, 'System32' );
my $tasklist_exe = File::Spec->catfile( $sys32dir, 'tasklist.exe' );
my ( $excel_line ) = grep { /^excel.exe\b/i } `$tasklist_exe`;
# $excel_line: 'EXCEL.EXE 4468 Console 1 20,968 K
# The PID is the second column
my ( undef, $pid ) = split qr{\s+}, $excel_line;
if ( my $rc = system( File::Spec->catfile( $sys32dir, 'taskkill.exe' )
, '/PID', $pid
)) {
die ( $OS_ERROR + 0 ) . ' - ' . $OS_ERROR;
}
于 2010-09-22T14:16:20.877 に答える