我试图找出一个应用程序(而不是vb.net)的实例是否已经在运行 - 因为我想启动它,但如果它已经运行我不想启动它.我找到了一个解决方案来检查进程是否正在运行:
Dim proc As Integer = Process.GetProcessesByName(ProcessName).GetUpperBound(0) + 1
Run Code Online (Sandbox Code Playgroud)
如果> = 1(或只是进程号),则返回True.
我的问题是,这是一个第三方应用程序,它的进程名称不只是一个名称,但它包含一个版本号(我可能在运行时可能不知道),它似乎也添加了一个*32(很可能a*64如果它是在x64中安装的吗?).
我需要按名称获取正在运行的进程列表,并测试"processname"是否是名称的子字符串.但我没有成功获得名单,只有进程ID.
您可以像这样循环运行的进程:
For Each p As Process In Process.GetProcesses()
Debug.WriteLine(p.ProcessName)
Next
Run Code Online (Sandbox Code Playgroud)
我需要按名称获取正在运行的进程列表,并测试"processname"是否是名称的子字符串.
你可以使用:
Dim procExists as Boolean = Process.GetProcesses().Any(Function(p) p.Name.Contains(processName))
Run Code Online (Sandbox Code Playgroud)
这将查看所有进程,procExists如果当前正在执行的进程中 processName存在任何包含的进程,则将值设置为True .这应该处理未知版本号的存在以及*32如果你在64位操作系统上运行可能会出现的情况(这是WOW64标志,说它是在64位操作系统上运行的32位进程).
| 归档时间: |
|
| 查看次数: |
33004 次 |
| 最近记录: |