Board logo

标题: [系统相关] [初步解决]xp系统下,vbs文件可以激活,但不能让软件在前台显示?如何解决? [打印本页]

作者: ygqiang    时间: 2014-12-22 20:45     标题: [初步解决]xp系统下,vbs文件可以激活,但不能让软件在前台显示?如何解决?

本帖最后由 ygqiang 于 2014-12-26 16:46 编辑

[初步解决]xp系统下,vbs文件可以激活,但不能让软件在前台显示??如何解决?

test.vbs文件内容如下。运行以后,间隔50秒可以激活“xx窗口2.0”软件,但并不能让这个软件在前台显示(如果用鼠标点击下这个软件,就能显示在前台了)。这个应该如何解决?
  1. Do
  2.     WScript.Sleep 50000
  3.     Call guan()
  4.     '50秒调用一次关闭重复窗口
  5. Loop
  6. Sub guan()
  7. set wshell=createobject("wscript.shell")
  8. wshell.appactivate "xx窗口2.0"
  9. End Sub
复制代码

作者: sz1121    时间: 2014-12-23 15:14

用插件吧,你还需要什么功能?
作者: ygqiang    时间: 2014-12-24 00:13

本帖最后由 ygqiang 于 2014-12-24 00:27 编辑
用插件吧,你还需要什么功能?
sz1121 发表于 2014-12-23 15:14



   下面的代码。功能是:激活并在前台最大化显示窗口。
如果窗口在后台任务栏上处于最大化情况下,有效。
如果需要激活的窗口,在后台最小化到任务栏以后。就不行了。


如何加一个最大化的vbs代码。加在什么位置?
(不需要一定要最大化,只要窗口能激活并在前台显示。就行。)
  1. set wshell=createobject("wscript.shell")  
  2. wshell.appactivate "计算器"
  3. wshell.sendkeys "{enter}"
复制代码

作者: ygqiang    时间: 2014-12-24 23:26

本帖最后由 ygqiang 于 2014-12-26 09:34 编辑

部分解决。

bat文件代码如下:
  1. @echo off
  2. if "%1" == "h" goto begin
  3. mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
  4. :begin
  5. rem 下边开始写批处代码了
  6. :start1
  7. ping 127.0.0.1 -n 50 >nul 2>nul
  8. 先用tasklist 输入进程列表给find ,让find找出EXE进程,如果找到,那执行下面的操作。找不到就goto
  9. tasklist|find /i "xx软件.EXE" ||goto :start1
  10. start c:\loopf5.vbs
  11. goto :start1
复制代码
loopf5.vbs文件代码如下:
  1. set wshell=CreateObject("word.Application")
  2. na="xx软件窗口2.0"
  3. If wshell.Tasks.Exists(na) = True Then
  4. wshell.Tasks(na).WindowState=wdWindowStateMaximize
  5. End If
  6. wshell.Quit
复制代码

作者: sz1121    时间: 2014-12-25 02:17

本帖最后由 sz1121 于 2014-12-25 14:35 编辑

Set ws=CreateObject("wscript.Wshshellex")

Do

pid = ws.api_GetProcessId("xx软件.EXE", n)

If n>1 Then MsgBox "有多个同名文件正在运行..."

If (pid) Then

hWnd = ws.api_FindWindow(vbnullstring, "xx软件窗口2.0") 'Windows API

Call ws.api_ShowWindow(hWnd, SW_SHOWNORMAL)      'Windows API

End If

WScript.Sleep(50000)

Loop

下载地址:http://pan.baidu.com/s/1qW2qBrY
作者: czjt1234    时间: 2014-12-25 08:20

第三方软件,只敢在虚拟机里用用
作者: sz1121    时间: 2014-12-25 14:36

是啊,停止分享了~~
作者: ygqiang    时间: 2014-12-25 20:43

Set ws=CreateObject("wscript.Wshshellex")

Do

pid = ws.api_GetProcessId("xx软件.EXE", n)

If ...
sz1121 发表于 2014-12-25 02:17



   

多谢。。。直接把这个代码,保存成vbs文件,就行了?
不需要第3方软件配合?
  1. Set ws=CreateObject("wscript.Wshshellex")
  2. Do
  3. pid = ws.api_GetProcessId("xx软件.EXE", n)
  4. If n>1 Then MsgBox "有多个同名文件正在运行..."
  5. If (pid) Then
  6. hWnd = ws.api_FindWindow(vbnullstring, "xx软件窗口2.0") 'Windows API
  7. Call ws.api_ShowWindow(hWnd, SW_SHOWNORMAL)      'Windows API
  8. End If
  9. WScript.Sleep(50000)
  10. Loop
复制代码

作者: ygqiang    时间: 2014-12-26 09:36

本帖最后由 ygqiang 于 2014-12-27 18:52 编辑

初步解决。

loopf5.vbs文件代码如下:
  1. set wshell = CreateObject("word.Application")
  2. set wshellw = wshell.tasks
  3. na=""xx窗口名"
  4. If wshellw.Exists(na) Then
  5.    wshellw(na).Activate         '激活窗口
  6.    wshellw(na).WindowState = 1  '0平常模式、1最大化模式、2最小化模式
  7. End If
  8. wshell.Quit
复制代码

作者: sz1121    时间: 2014-12-26 14:51

回复 8# ygqiang


    需要第三方,好象很多人不喜欢用,或者不敢用,我就不分享了




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