Board logo

标题: [系统相关] 批处理如何找出当前所有窗口的名字? [打印本页]

作者: bsdzhu    时间: 2009-9-16 17:02     标题: 批处理如何找出当前所有窗口的名字?

您好,

我写了一段代码
echo 开始重启Maya,请稍后...
"C:\Program Files\Autodesk\Maya2008\bin\maya.exe"
echo 已经重启Maya。按任意键退出。
pause
想得到的效果是:用户看到了“开始重启Maya,请稍后...
”的信息,等了一会,maya启动好了,cmd窗口自动显示“已经重启Maya。按任意键退出。”。

我遇到的问题是:maya启动好了,cmd窗口已经失去焦点,所以语句不再往下执行了,回到cmd窗口,用户还是看到那句话“开始重启...”,会感到困惑。怎样才可以让cmd窗口显示正确呢?

谢谢浏览。
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
9月24日编辑:
在大家帮助下,我想到了一个思路,见16楼,利用maya启动完毕,任务栏就会有maya的窗口了(‘启动完毕’前没有)来判断。新的问题就是:如何找出当前所有窗口(按alt+tab看到的那个列表)的名字?
原标题:[文件操作] 如何在用批处理启动程序后继续执行余下的代码
新标题:[系统相关] 如何找出当前所有窗口的名字?

[ 本帖最后由 bsdzhu 于 2009-9-24 11:34 编辑 ]
作者: januapr    时间: 2009-9-16 17:52

试一下这个:
  1. @echo off
  2. echo 开始重启Maya,请稍后...
  3. start "" "C:\Program Files\Autodesk\Maya2008\bin\maya.exe"
  4. echo 已经重启Maya。按任意键退出。
  5. pause
复制代码


注解,
批处中如果在启动的程序前没有加上start的话,系统默认是用call 打开程序的.
而call相当于调用子程序,在子程序没有结束,是不会返回CMD窗口执行下一行语句的!

[ 本帖最后由 januapr 于 2009-9-19 04:17 编辑 ]
作者: bsdzhu    时间: 2009-9-17 10:23     标题: 回复 2楼 的帖子

您好,
谢谢您告诉我start和call的区别。
不过,我试过了

echo 开始重启Maya,请稍后...
start "" "C:\Program Files\Autodesk\Maya2008\bin\maya.exe"
echo 已经重启Maya。按任意键退出。

第二个echo的内容总是马上就显出来了,应该是等maya启动好了它才出来。
因为实际应用中,maya这个软件启动比较耗时,所以我想要的就是bat监视着maya刚刚启动好了,于是它告诉用户,启动好了。
作者: januapr    时间: 2009-9-17 16:36

“想要的就是bat监视着maya刚刚启动好了,于是它告诉用户,启动好了。”

这个我也搞不来!

要么就是程序启动了,tasklist里有它的进程;
要么就是程序没有启动,tasklist里没有它的进程。
这个倒是好判断。

但是你要判断程序启动了,并且完全加载完成,这个怎么判断?
我也恳请高手指点,呵呵!!
作者: a904055262    时间: 2009-9-17 16:47

加参数 /wait
作者: keen    时间: 2009-9-17 19:13     标题: 回复 5楼 的帖子

加 /wait也不行。
WAIT        启动应用程序并等候它结束


加上/wait参数后,把启动的程序关掉后,才接着往下执行。
作者: Lumiere    时间: 2009-9-19 10:29     标题: 回复 3楼 的帖子

启动完成后有什么特征么?要不就估计启动大概有多长时间,然后用个命令延时,最后再执行echo。
作者: Lumiere    时间: 2009-9-19 10:34

  1. @echo off
  2. echo 开始重启Maya,请稍后...
  3. start "" "C:\Program Files\Autodesk\Maya2008\bin\maya.exe"
  4. ping 127.0.0.1 -n 20>nul
  5. echo 已经重启Maya。按任意键退出。
  6. pause
复制代码

作者: a904055262    时间: 2009-9-19 10:37

呵呵 应该找到 一些容易判断的条件
比如说 启动完后多一个进程 或者启动完成后 有一个进程会自动退出
这样就好办了   没用过 MAYA  会MAX
作者: Lumiere    时间: 2009-9-19 13:50     标题: 回复 9楼 的帖子

一般的程序都是一执行就会出现在任务管理器中。所以不具有通用性,就事论事,针对这个maya的软件。应该延时一下就可以了。
作者: Seter    时间: 2009-9-20 10:41

批处理怎么知道MAYA是否加载完毕啊....这个没有任何特征的...不可能知道...电脑毕竟不是人啊
就算是人,吃了个面包后,难道能知道面包啥时候被完全消化的?
作者: sniperhgy    时间: 2009-9-20 12:19

延時也不靠譜,因爲電腦配置不一樣,啓動速度也就不一樣了
作者: Lumiere    时间: 2009-9-20 12:36

所以说纯P估计难做到,用第三方或者用VB之类的更强大的语言
作者: Seter    时间: 2009-9-20 14:13

我想第三方也很难做到..或者说很费时间...
作者: bsdzhu    时间: 2009-9-20 22:48

谢谢各位朋友。
看了大家的帖子,得出思路应该是查看一下,maya刚刚好启动完毕时,系统的变化,比如新建了什么文件,或者某个文件正在使用等等。
目前还没发现Maya这个程序带给系统的的“变化”。

[ 本帖最后由 bsdzhu 于 2009-9-20 23:00 编辑 ]
作者: bsdzhu    时间: 2009-9-21 14:25

刚刚想到一个思路:
利用的变化:maya启动完毕,任务栏就会有maya的窗口了(‘启动完毕’前没有),或者按alt+tab有maya这个选项了。

问题:如何找出表示当前所有窗口的名字?
局限性:在我的机器上,maya可以用这个方法,但是不见得其他软件也可以。例如photoshop,我试过,双击之后,启动完毕前,就有photoshop这个窗口了




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