作者jjt (jet)
看板Perl
标题Re: [问题] 如何关闭使用system开启的程式?
时间Sat Jan 19 10:25:23 2008
※ 引述《mosquito520 ( )》之铭言:
: 抱歉,由於我对於perl近乎无知,
: 使用perl是因为我想写个简单的程式。
: 这个程式需要连接网路送http request,
: 考量到写程式的方便性以及发布时的考量,
: ﹝C socket programming 我只会写unix底下的,
: winsock到现在我还不知道怎麽用,
: PHP也很方便,但是发布的时候没办法包成执行档,
: 总不可能要每个人去抓PHP来装。
: VB、VC都不大熟...Orz﹞
: 基於上述考量,所以我选择用perl来开发。
: 不过目前我碰到一个问题是大部分语言可能都会碰到的难题,
: ﹝C#除外,我在MSDN上有找到solution﹞
: 就是,我在windows底下开发,预计在windows底下执行。
: 我可以使用exec或是system开启外部程式,
: 我也爬过版上的文章,google找了不少关键字。
: 我的问题是,我要如何关闭我用system开启的外部程式?
: 我要开启的外部程式是IExplore.exe
: windows的指令有taskkill可以使用,但是我需要知道我开启的程式的pid,
: 同时也有tasklist可以使用,可是如果同时有两个以上的IE在执行,
: 我不知道哪一个才是我开启的。
: perl的function getppid是取得parent的pid,不适用...
: 所以想请问,有任何建议的方法吗???
use Win32::Process::List;
use Win32::Process;
my $P = Win32::Process::List->new();
my %tasklist= $P->GetProcesses();
foreach $pid(keys %tasklist)
{
print "$pid $tasklist{$pid}\n";
#Win32::Process::KillProcess($pid, $errcode);
}
注解那行就是KILL的方法
~~~~~~~~~~~~~~
如果要跑这个范例不要拿掉那个注解
没有设下任何条件if 会把所有程序都kill掉喔!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.197.133
※ 编辑: jjt 来自: 140.121.197.133 (01/19 10:29)
1F:→ mosquito520:感谢:) 01/19 14:43