网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月29日漏签0天
vbs吧 关注:18,252贴子:104,526
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 78回复贴,共1页
<<返回vbs吧
>0< 加载中...

求个VBS,运行OK 10元感谢。详情请进

  • 只看楼主
  • 收藏

  • 回复
  • _YuuKyuu
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
每30秒检测一次正在运行的进程,如果1.exe或2.exe正在运行,则运行a.vbs,如果3.exe正在运行,则运行b.vbs。
3.exe的优先级高于1和2,即123都在运行的时候只执行b.vbs。
运行a或b.vbs只运行一次,即123可能一直在运行,不能每30秒就运行一次a或b.vbs。
3.exe退出后检测到1和2还再运行,执行一次a.vbs。
123都退出后,执行一次C.vbs,本vbs继续运行,继续每30秒检测一次。


  • 雷克斯_派
  • 铁杆吧友
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
没测试它,目测是木有问题,有再回
支付宝 411800324@qq.com 给我7.5元买包烟就行了 哈

Dim OneRun'声明该变量范围
Set WSS = CreateObject("WScript.Shell")
OneRun = True'允许a或b的运行
Call Main
Set WSS = NoThing
Sub Main()
For Each Ps In GetObject("WinMGMTs:\\.\Root\cimv2:Win32_Process").instances_ : With Ps
Select Case LCase(.Name)'改为全小写匹配,下方Case的进程名字符串自行使用小写,或同用LCase处理
Case "3.exe"'3存在时
Run "b.vbs", True
Case "1.exe", "2.exe"'1或2存在时
Run "a.vbs", False
Case Else'123都不存在时
WSS.Run "c.vbs"'执行C
OneRun = True'允许a或b的运行
End Select
End With: Next
WSH.Sleep 30 * 1000
Call Main
End Sub
Sub Run(ByVal FilePath, ByVal EXE3)'传递vbs路径 与 3.exe是否存在
'当a或b是第一次 或 3.exe是关闭的(这条只对1或2生效),则运行
If OneRun Or Not EXE3 Then WSS.Run "wscript " & FilePath: WSH.Echo "运行:" & FilePath
'a或b 运行一次后设定下次不运行
OneRun = False
End Sub


2025-07-29 08:33:30
广告
不感兴趣
开通SVIP免广告
  • 雷克斯_派
  • 铁杆吧友
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Dim OneRun'声明该变量范围
Set WSS = CreateObject("WScript.Shell")
OneRun = True'允许a或b的运行
Call Main
Set WSS = NoThing
Sub Main()
For Each Ps In GetObject("WinMGMTs:\\.\Root\cimv2:Win32_Process").instances_ : With Ps
Select Case LCase(.Name)'改为全小写匹配,下方Case的进程名字符串自行使用小写,或同用LCase处理
Case "3.exe"'3存在时
Run "b.vbs", True
Case "1.exe", "2.exe"'1或2存在时
Run "a.vbs", False
Case Else'123都不存在时
WSS.Run "c.vbs"'执行C
OneRun = True'允许a或b的运行
End Select
WSH.Sleep 30 * 1000
Exit For
End With: Next
Call Main
End Sub
Sub Run(ByVal FilePath, ByVal EXE3)'传递vbs路径 与 3.exe是否存在
'当a或b是第一次 或 3.exe是关闭的(这条只对1或2生效),则运行
If OneRun Or Not EXE3 Then WSS.Run "wscript " & FilePath: WSH.Echo "运行:" & FilePath
'a或b 运行一次后设定下次不运行
OneRun = False
End Sub
等会我试试


  • 雷克斯_派
  • 铁杆吧友
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

根据你的条件.....
执行c后 ab重新开启
a最多2次
b最多1次
c最多1次
对吧?


  • 雷克斯_派
  • 铁杆吧友
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Dim OneRunA, OneRunB, OneRunC'声明该变量范围
Set WSS = CreateObject("WScript.Shell")
Set SD = CreateObject("Scripting.Dictionary")
OneRunA = 0
OneRunB = True
OneRunC = True
Call Main
Set WSS = NoThing
Sub Main()
For Each Ps In GetObject("WinMGMTs:\\.\Root\cimv2:Win32_Process").instances_
If Not SD.Exists(LCase(Ps.Name)) Then SD.Add LCase(Ps.Name), ""
Next
With SD
WSH.Echo "状态:" & "1.exe>" & .Exists("1.exe") & "2.exe>" & .Exists("2.exe") & "3.exe>" & .Exists("3.exe")
Select Case True
Case .Exists("3.exe")'当3存在无论12是否存在时
If OneRunB Then Run "b.vbs": OneRunB = False
Case .Exists("1.exe") Or .Exists("2.exe"), (.Exists("1.exe") And .Exists("2.exe")) And Not .Exists("3.exe")'当1或2存在时 或 当1和2存在且3不存在时
If OneRunA <= 1 Then Run "a.vbs": OneRunA = OneRunA + 1
Case Not(.Exists("1.exe") And .Exists("2.exe") And .Exists("3.exe"))'当123都不存在时
If OneRunC Then Run "c.vbs": OneRunC = False'设置允许a或b的运行
OneRunA = 0
OneRunB = True
If OneRunA = False And OneRunB = False Then OneRunC = True'以前2个条件都执行过一次时 才开放C,如果你打算前2个条件其中1个符合就开放C 把 And换Or 即可
End Select
WSH.Sleep 30 * 1000
.RemoveAll
End With
Call Main
End Sub
Sub Run(ByVal FilePath)
WSS.Run "wscript " & FilePath: WSH.Echo "运行:" & FilePath
End Sub
你先试试吧


  • _YuuKyuu
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

比较接近了,改成Or后测试正常,直到关闭了1和2(mediainfo和yy)后 每30秒运行一次c,应该只运行一次的,你看看哪里不对?


  • _YuuKyuu
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其实我要这个vbs是用来切换显卡状态的,由于某些原因我只能使用自己已编辑好的vbs文件切换状态(运行一次vbs切换(覆盖)一次状态,所以运行一次即可)。
平时闲置状态就叫idle状态吧,运行A类游戏的时候需要切换到stateH状态,运行B类游戏的时候需要切换到stateL状态,如果两类游戏都有在运行,使用stateH状态。不运行游戏的时候使用idle状态。
实际上需求就是上面这些,实际运行会有很多情况(比如有A类的时候又运行了B类,从B类变成了A类或者直接都退了),能处理好做到每个情景使用正确的状态就ok了。
然后就是能比较简单的编辑AB类游戏列表(进程列表),因为以后会玩更多的游戏。
@雷克斯_派


  • 雷克斯_派
  • 铁杆吧友
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Dim NowState, NewState, SD(2)
Set WSS = CreateObject("WScript.Shell")
'方便配置
L = Array("1.exe", "2.exe", "notepad.exe")
H = Array("3.exe", "4.exe")
For I = 0 To 2
Set SD(I) = CreateObject("Scripting.Dictionary")
Next
For Each TempI In L'A
If Not SD(1).Exists(TempI) Then SD(1).Add TempI, ""
Next
For Each TempI In H'B
If Not SD(2).Exists(TempI) Then SD(2).Add TempI, ""
Next
Call Main
'--
Sub Main()
'刷新进程列表
For Each Ps In GetObject("WinMGMTs:\\.\Root\cimv2:Win32_Process").instances_
If Not SD(0).Exists(LCase(Ps.Name)) Then SD(0).Add LCase(Ps.Name), ""
Next
For Each TempI In SD(1).Keys
If SD(0).Exists(TempI) Then tfLow = True
Next
For Each TempI In SD(2).Keys
If SD(0).Exists(TempI) Then tfHot = True
Next
Select Case True
Case tfHot: NewState = "Hot"
Case tfLow: NewState = "Low"
Case tfHot = False And tfLow = False: NewState = "idle"
End Select
WSH.Echo "状态:" & "1.exe>" & SD(0).Exists("1.exe") & "2.exe>" & SD(0).Exists("2.exe") & "3.exe>" & SD(0).Exists("3.exe")
If Not NowState = NewState Then
Select Case NewState
Case "Hot": Run "B.vbs"
Case "Low": Run "A.vbs"
Case "idle": Run "C.vbs"
End Select
NowState = NewState
End If
SD(0).RemoveAll '忘记了..
WSH.Sleep 10 * 1000
Call Main
End Sub
Sub Run(ByVal FilePath)
WSS.Run "wscript " & FilePath: WSH.Echo "运行:" & FilePath
End Sub
'h=3
'l=12
'h>L
'h无视l
'l状态的触发 必定h不存在时
'两者都不存在 则C


2025-07-29 08:27:30
广告
不感兴趣
开通SVIP免广告
  • 1035362455
  • 人气楷模
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不错,顶


  • _YuuKyuu
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

时间久了会崩溃。。@雷克斯_派


  • 雷克斯_派
  • 铁杆吧友
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

之前的 增幅量VR:2-10K左右 DR:2-4K
现在改后 VR和DR 能保持VR4500 DR1700 内,以每秒Sleep结果
不过 也看你系统和其他影响的地方了
'----
Dim NowState, NewState, EXE(1), SD(1)
Set WSS = CreateObject("WScript.Shell")
Set SDP = CreateObject("Scripting.Dictionary")
Set MD = CreateObject("Scripting.Dictionary")
SN = Array("Low", "Hot", "idle")
SF = Array("A.vbs", "B.vbs", "C.vbs")
For I = 0 To UBound(SN)
MD.Add SN(I), SF(I)
Next
EXE(0) = Array("1.exe", "2.exe", "notepad.exe")
EXE(1) = Array("3.exe", "4.exe")
For I = 0 To 1
Set SD(I) = CreateObject("Scripting.Dictionary")
For Each TempI In EXE(I)
If Not SD(I).Exists(TempI) Then SD(I).Add TempI, ""
Next
Next
Do
'刷新进程列表
For Each Ps In GetObject("WinMGMTs:\\.\Root\cimv2:Win32_Process").instances_
If Not SDP.Exists(LCase(Ps.Name)) Then SDP.Add LCase(Ps.Name), ""
Next
For Each TempI In SD(0).Keys
If SDP.Exists(TempI) Then tfLow = True
Next
For Each TempI In SD(1).Keys
If SDP.Exists(TempI) Then tfHot = True
Next
Select Case True
Case tfHot: NewState = SN(1)
Case tfLow: NewState = SN(0)
Case Else : NewState = SN(2)
End Select
If Not NowState = NewState Then
Run MD.Item(NewState)
NowState = NewState
End If
tfLow = False
tfHot = False
SDP.RemoveAll
WSH.Sleep 1 * 1000
Loop
Sub Run(ByVal FilePath)
WSS.Run "wscript " & FilePath: WSH.Echo "运行:" & FilePath
End Sub


  • 雷克斯_派
  • 铁杆吧友
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我擦 什么鬼 发不了


  • 1035362455
  • 人气楷模
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
居然在2天内骗取了80多回复,说明本吧还是有活人的嘛


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 78回复贴,共1页
<<返回vbs吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示