Foxtable(狐表)用户栏目专家坐堂 → 如何写指令,实现循环遍历进程,直到发现指定的进程。


  共有5018人关注过本帖树形打印复制链接

主题:如何写指令,实现循环遍历进程,直到发现指定的进程。

帅哥哟,离线,有人找我吗?
playmal
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1581 积分:13064 威望:0 精华:0 注册:2009/6/16 7:30:00
如何写指令,实现循环遍历进程,直到发现指定的进程。  发帖心情 Post By:2022/5/19 22:19:00 [只看该作者]

如题

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/19 22:32:00 [只看该作者]

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses() 'System.Diagnostics.Process.GetProcessesByName("指定的进程名称")
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("指定的进程名称" = p.ProcessName)
        msgbox(p.MainWindowTitle)
     '   p.kill
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
playmal
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1581 积分:13064 威望:0 精华:0 注册:2009/6/16 7:30:00
  发帖心情 Post By:2022/5/20 17:29:00 [只看该作者]

这个无法实现循环检测,仅仅对当前进程进行了一次遍历

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/20 17:33:00 [只看该作者]

怎么样才算是循环检测?

 回到顶部
帅哥哟,离线,有人找我吗?
playmal
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1581 积分:13064 威望:0 精华:0 注册:2009/6/16 7:30:00
  发帖心情 Post By:2022/5/21 10:27:00 [只看该作者]

遍历完一次后,如果没有发现进程仍然继续遍历,直到找到指定的进程后停止。

 回到顶部
帅哥哟,离线,有人找我吗?
chen37280600
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1279 积分:7953 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2022/5/21 11:00:00 [只看该作者]

那你来问的不是进程,而是问语法基础
For是一次

Do Loop才是你想要的

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/21 11:02:00 [只看该作者]

遍历完一次后,如果没有发现进程,说明进程不存在。遍历再多遍有什么用?

如果不知道对方程序什么时候打开,就到计划管理中处理。但是如果对方程序一直不打开,这样一直遍历,自身的程序就别想做其它什么了,就一直遍历吧

 回到顶部
帅哥哟,离线,有人找我吗?
chen37280600
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1279 积分:7953 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2022/5/21 11:03:00 [只看该作者]

你是不是想监听那堆服务器端Exe程序有没运行?没运行就启动,方便管理?

  1. 记录目前服务器里所有的狐表程序路径
  2. 每30秒,自动检查一次每个程序是否启动。如果未启动的,就运行它。
  3. 其他一个程序后,间隔8秒再启动下一个,防止一次过启动太多exe,造成较大的数据库连接压力
  4. 可以设置续费的日期,到期前3天自动发送邮件提醒
  5. 可以定期删除过时的数据库备份文件
https://www.mbldt.com/foxservermanage/


 回到顶部
帅哥哟,离线,有人找我吗?
playmal
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1581 积分:13064 威望:0 精华:0 注册:2009/6/16 7:30:00
  发帖心情 Post By:2022/5/22 11:29:00 [只看该作者]

用do。。。loop如何改上面的:
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses() 'System.Diagnostics.Process.GetProcessesByName("指定的进程名称")
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("指定的进程名称" = p.ProcessName)
        msgbox(p.MainWindowTitle)
     '   p.kill
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/22 20:22:00 [只看该作者]

do while true

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses() 'System.Diagnostics.Process.GetProcessesByName("指定的进程名称")
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("指定的进程名称" = p.ProcessName)
        msgbox(p.MainWindowTitle)
exit do
     '   p.kill
    End If
Next
loop

 回到顶部