Board logo

标题: [已结]有两个QQ先后运行,如何得到他们的PID? [打印本页]

作者: kyqm     时间: 2009-1-31 17:42    标题: [已结]有两个QQ先后运行,如何得到他们的PID?

[求助]通过dos命令让两个QQ先后运行,如何得到他们的PID?

因为我想用dos关闭其中某个,比如说关闭第一个吧

我有个大致思路:
2个QQ运行时必有先后,每次记下运行时进程列表,
通过比较可以把两者PID区分开来

不知是否能行,如果行,能否帮忙写个
谢谢

[ Last edited by HAT on 2009-2-3 at 05:44 ]
作者: slore     时间: 2009-1-31 19:28
WMI得到的话是按先后顺序,大小貌似不太确定,一般大的是后面的……一般
作者: voiL     时间: 2009-1-31 20:09
如果根据PID大小来判断程序启动的先后是不行的哦.

以前好像在哪看到有个程序可以看到任一进程运行的时间的吧.

不过现在那文章我找不到了,之前收藏过的.
作者: moniuming     时间: 2009-1-31 22:28
前提条件为QQ必须是通过命令行来登陆.
@echo off
Setlocal Enabledelayedexpansion
:agn
set n=0&set "in="
::请根据实际情况对下面这句的"tokens="后面的内容作适当更改
for /f "tokens=6,11 delims=: " %%a in ('wmic process where "name='qq.exe'" get commandline^,handle') do (
  set /a n+=1
  set pid!n!=%%b
  echo.!n!   %%a
)
echo.&set input=&set /p input=请输入要退出的QQ的序号(回车退出):
if not defined input goto :eof
:again
set "in= %input:~,1%%in%"
if not "%input:~1%"=="" (
  set input=%input:~1%
  goto :again
)
for %%a in (%in%) do (
  taskkill /f /pid !pid%%a!
)
echo.&goto :agn

作者: mgq     时间: 2009-2-1 12:19
@echo off
for /f "tokens=2 delims= " %%a in ('tasklist /fi "imagename eq qq.exe" /v /fo table^|findstr /i /c:"qq.exe"') do (
echo %%a
)
pause
作者: mountvol     时间: 2009-2-1 14:53
wmic process get Caption,CreationDate,handle
作者: BC     时间: 2009-2-2 09:46
抓到不少高手出来啊,学习!
作者: kyqm     时间: 2009-2-2 16:06
谢谢给出源码的朋友,研究中。。。