标题: [系统相关] [初步解决]xp系统下,vbs文件可以激活,但不能让软件在前台显示?如何解决? [打印本页]
作者: ygqiang 时间: 2014-12-22 20:45 标题: [初步解决]xp系统下,vbs文件可以激活,但不能让软件在前台显示?如何解决?
本帖最后由 ygqiang 于 2014-12-26 16:46 编辑
[初步解决]xp系统下,vbs文件可以激活,但不能让软件在前台显示??如何解决?
test.vbs文件内容如下。运行以后,间隔50秒可以激活“xx窗口2.0”软件,但并不能让这个软件在前台显示(如果用鼠标点击下这个软件,就能显示在前台了)。这个应该如何解决?- Do
- WScript.Sleep 50000
- Call guan()
- '50秒调用一次关闭重复窗口
- Loop
-
- Sub guan()
- set wshell=createobject("wscript.shell")
- wshell.appactivate "xx窗口2.0"
- 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代码。加在什么位置?
(不需要一定要最大化,只要窗口能激活并在前台显示。就行。)- set wshell=createobject("wscript.shell")
- wshell.appactivate "计算器"
- wshell.sendkeys "{enter}"
复制代码
作者: ygqiang 时间: 2014-12-24 23:26
本帖最后由 ygqiang 于 2014-12-26 09:34 编辑
部分解决。
bat文件代码如下:- @echo off
- if "%1" == "h" goto begin
- mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
- :begin
- rem 下边开始写批处代码了
-
-
- :start1
- ping 127.0.0.1 -n 50 >nul 2>nul
- 先用tasklist 输入进程列表给find ,让find找出EXE进程,如果找到,那执行下面的操作。找不到就goto
- tasklist|find /i "xx软件.EXE" ||goto :start1
-
- start c:\loopf5.vbs
- goto :start1
复制代码
loopf5.vbs文件代码如下:- set wshell=CreateObject("word.Application")
- na="xx软件窗口2.0"
- If wshell.Tasks.Exists(na) = True Then
- wshell.Tasks(na).WindowState=wdWindowStateMaximize
- End If
- 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方软件配合?- 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
复制代码
作者: ygqiang 时间: 2014-12-26 09:36
本帖最后由 ygqiang 于 2014-12-27 18:52 编辑
初步解决。
loopf5.vbs文件代码如下:- set wshell = CreateObject("word.Application")
- set wshellw = wshell.tasks
- na=""xx窗口名"
- If wshellw.Exists(na) Then
- wshellw(na).Activate '激活窗口
- wshellw(na).WindowState = 1 '0平常模式、1最大化模式、2最小化模式
- End If
- wshell.Quit
复制代码
作者: sz1121 时间: 2014-12-26 14:51
回复 8# ygqiang
需要第三方,好象很多人不喜欢用,或者不敢用,我就不分享了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |