Board logo

标题: [系统相关] [已解決]批处理如何获取指定进程名的窗口名? [打印本页]

作者: strong12345    时间: 2009-10-6 01:48     标题: [已解決]批处理如何获取指定进程名的窗口名?

进程名 和 窗口名 不一样
最好的例子就是IE
IE的进程名是 iexplore.exe
窗口名称则决定于目前浏览的网页
请问如何在已知进程名的情形下,获取窗口名?

ps.小弟是希望能反覆一直开很多网页,并纪录下每个网页的窗口名称

[ 本帖最后由 strong12345 于 2009-10-17 02:24 编辑 ]
作者: Seter    时间: 2009-10-6 06:33

比较难实现...像TheWorld,2个进程,1个没窗口,1个俩窗口,咋办?
作者: strong12345    时间: 2009-10-6 07:02

那请问有没有办法像tasklist一样,直接显示目前所有窗口名称清单的方法?
作者: rat    时间: 2009-10-6 08:49

原帖由 strong12345 于 2009-10-6 07:02 发表
那请问有没有办法像tasklist一样,直接显示目前所有窗口名称清单的方法?
tasklist /v /fo list|find "窗口标题"
作者: Lumiere    时间: 2009-10-6 10:23     标题: 回复 4楼 的帖子

楼上的list应该是多余的吧?
作者: zqz0012005    时间: 2009-10-6 12:22

不管是何种编程语言,楼主标题中的问题是一个永恒的话题!

涉及到众多API的使用问题,bat是无能为力的。

其实你何必要把范围放大,把问题弄复杂化呢?
explorer.exe、iexplore.exe(包括使用ie核心的浏览器)这两个(其实相当于一个)是比较特别的进程,可以使用Shell.Application的Windows类得到他们的窗口的一些属性。除了这种窗口,堂堂的vbs不用三方组件竟没办法获取窗口标题,实在是一大憾事!

vbs
  1. set sh = CreateObject("Shell.Application")
  2. set wnds = sh.windows
  3. for each wnd in wnds
  4.     if InStr(1, wnd.LocationURL, "http", 1) = 1 then wsh.echo wnd.document.title
  5. next
复制代码

[ 本帖最后由 zqz0012005 于 2009-10-6 15:20 编辑 ]
作者: rat    时间: 2009-10-6 22:35     标题: 回复 6楼 的帖子

貌似用FullName区分IE和资源管理器来得更精准~
  1. tasklist /V /FI "IMAGENAME eq "iexplorE.exe"" /FO list|find "窗口标题"
复制代码

作者: zqz0012005    时间: 2009-10-7 09:55     标题: 回复 7楼 的帖子

没必要区分。
资源管理器也可以直接打开网页(explorer.exe与iexplore.exe是骨肉至亲、骨肉相连)。
不过如果装了IE7它会自动截获,在资源管理器中输入网址会打开ie。

但我这个电脑上(IE6)用命令行的方式运行explorer.exe http://www.bathome.net时会自动用ie打开,只有先打开一个资源管理器窗口,在其中输入网址才是用explorer.exe直接打开。
作者: strong12345    时间: 2009-10-8 11:55

感谢大家告诉了我tasklist /fo list 的方法,小弟已经成功解决问题了
(我以前都不知道能这样显示窗口名 = =a....  惨)




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2