我试图找出一个应用程序(不是vb.net)的实例是否已经在运行 – 因为我想要启动它,但如果它已经运行我不想启动它.我找到了一个解决方案来检查进程是否正在运行:
Dim proc As Integer = Process.GetProcessesByName(ProcessName).GetUpperBound(0) + 1
如果> = 1(或只是进程号),则返回True.
我的问题是,这是一个第三方应用程序,它的进程名称不只是一个名称,但它包含一个版本号(我可能在运行时可能不知道),它似乎也添加了一个* 32(所以可能a * 64如果它是在x64中安装的吗?).
我需要按名称获取正在运行的进程列表,并测试“processname”是否是名称的子字符串.
但我没有成功获取名单,只有进程ID.
I need to get a list of running processes,by name,and test if “processname” is a substring of the name.
你可以使用:
Dim procExists as Boolean = Process.GetProcesses().Any(Function(p) p.Name.Contains(processName))
这将查看所有进程,并在当前正在执行的进程中存在包含processName的任何进程时将procExists值设置为True.这应该处理未知版本号的存在以及如果你在64位操作系统上运行时可能出现的* 32(这是WOW64标志,表示它是在64位操作系统上运行的32位进程).