以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何写指令,实现循环遍历进程,直到发现指定的进程。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177389)

--  作者:playmal
--  发布时间:2022/5/19 22:19:00
--  如何写指令,实现循环遍历进程,直到发现指定的进程。
如题
--  作者:有点蓝
--  发布时间: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
--  发布时间:2022/5/20 17:29:00
--  
这个无法实现循环检测,仅仅对当前进程进行了一次遍历
--  作者:有点蓝
--  发布时间:2022/5/20 17:33:00
--  
怎么样才算是循环检测?
--  作者:playmal
--  发布时间:2022/5/21 10:27:00
--  
遍历完一次后,如果没有发现进程仍然继续遍历,直到找到指定的进程后停止。
--  作者:chen37280600
--  发布时间:2022/5/21 11:00:00
--  
那你来问的不是进程,而是问语法基础
For是一次

Do Loop才是你想要的

--  作者:有点蓝
--  发布时间:2022/5/21 11:02:00
--  
遍历完一次后,如果没有发现进程,说明进程不存在。遍历再多遍有什么用?

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

--  作者:chen37280600
--  发布时间:2022/5/21 11:03:00
--  
你是不是想监听那堆服务器端Exe程序有没运行?没运行就启动,方便管理?

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


--  作者:playmal
--  发布时间: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

--  作者:有点蓝
--  发布时间: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