Par exemple, pour avoir le processus rschit excell.exe signifie Perl.Comment puis-je terminer le processus dans Win32 au nom du processus en Perl?
Répondre
S'il s'agit du processus restant en "mode serveur" après l'automatisation, vous pouvez simplement appeler la méthode quit
sur l'objet d'application. J'ai édité par réponse au How can I run a macro in an Excel file I open with Perl? pour l'inclure. (Vous savez, je pensais que si je vous disais que c'était un objet Application
, vous pouvez lire le MS documentation on that object à comprendre ce que vous vouliez faire.)
Cependant, vous pouvez tuer un processus dans les fenêtres avec taskkill.exe
. Vous pouvez lire en tapant taskkill /?
sur la ligne de commande. Il va gérer taskkill /IM excel.exe
. Mais si vous voulez un PID spécifique, vous devez utiliser tasklist.exe
. (Type tasklist
à l'invite de commande pour voir la sortie ou tasklist /?
pour plus d'informations.).
Le code ci-dessous utilise à la fois:
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;
}
ОК. Je vous remercie!!! – jushlwest
avez-vous essayé de passer un appel système à "taskkill/IM excel.exe"?
Pouvez-vous s'il vous plaît fournir plus de détails? Je n'ai aucune idée de ce dont vous parlez. – msteiger
En regardant ses autres questions, je devine qu'il veut tuer une application/processus dans win32 (excel en particulier) – Powertieke