以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于执行外部程序  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176210)

--  作者:flashv
--  发布时间:2022/4/4 16:38:00
--  关于执行外部程序

Dim Proc As New Process \'定义一个新的Process
Proc.File =
"C:\\test.xls" \'指定要打开的文件

Proc.Start()


1.如何判断文件是否存在?


2.如何判断文件是否已经运行(避免重复运行)


盼复,谢谢老师!


--  作者:chen37280600
--  发布时间:2022/4/4 17:02:00
--  
你是想写一个自动控制多个狐表程序自启吗?可以通过Windows进程,与该狐表程序的名字做比对,判断是否已经在运行
--  作者:flashv
--  发布时间:2022/4/4 17:45:00
--  
不是,写的一个收银系统,要调用扫码收款的程序.
--  作者:flashv
--  发布时间:2022/4/4 22:50:00
--  
官方老师们都放假了啊?
--  作者:flashv
--  发布时间:2022/4/5 0:26:00
--  
如何判断文件是否存在我已经知道了.
如何判断文件是否运行了呢?(可执行文件,不是EXCEL文档)

--  作者:hongsejiyi
--  发布时间:2022/4/5 7:56:00
--  

看看是否有用,请参考:

函数代码:  函数名为test_win
\'本函数的功能是,测试指定的程序/窗口标题,是否存在
\'可以终止指定的窗口
\'如果存在,返回True,不存在返回 False
\'第三个参数可有可无,如果有且为True,就会查找该窗口,如果有就关闭; 如果没有或者有且为False,只查不关闭.

Dim proc_name As String = args(0)  \'运行程序的文件名,不函扩展
Dim proc_title As String = args(1) \'窗口标题

Dim proc_kill As Boolean  \'获得是否关闭此窗口

If args.length =3 Then  \'参数可以只有两个
    proc_kill  = args(2)
Else
    proc_kill = False
End If

Dim test_win As Boolean = False   \'返回值 ,默认为False

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    If (proc_name = p.ProcessName AndAlso p.MainWindowTitle.contains( proc_title ) )
        \'msgbox(p.MainWindowTitle)
        test_win = True
        \'output.Show(p.processname & "->" & p.mainwindowtitle)
        If proc_kill Then
            p.kill  \'杀掉查找到的进程
        End If
    End If
Next

Return test_win  \'返回查找的状态,True为查找到了,False为没有找到

[此贴子已经被作者于2022/4/5 7:56:42编辑过]