C# 将字符串与进程名称进行比较

C# 将字符串与进程名称进行比较,c#,visual-studio-2013,C#,Visual Studio 2013,我想这样做。。。如果记事本在前台,它会打开计算器。。。如果另一个程序处于打开状态,则不会执行任何操作。。。这个记事本是手工制作的。。。“开始,记事本”。。。我有这个代码来“查看”记事本是否打开。。。D:我知道我必须使用 if (switch == 0) { if (SOMETHING == "Notepad") { var switch = 1 //so it doesnt enters in a loop OPEN CALCULATOR //irrelevant, i may us

我想这样做。。。如果记事本在前台,它会打开计算器。。。如果另一个程序处于打开状态,则不会执行任何操作。。。这个记事本是手工制作的。。。“开始,记事本”。。。我有这个代码来“查看”记事本是否打开。。。D:我知道我必须使用

if (switch == 0)
{
if (SOMETHING == "Notepad")
{
   var switch = 1 //so it doesnt enters in a loop
   OPEN CALCULATOR //irrelevant, i may use another part of otrher code that is already working
   }
}
“switch”变量从代码开始就是0,这样就可以工作了(hope)

问题是我不知道在“SOMETHING”上加什么来使用其余的代码,以及在哪里或如何使用If…

您可以做:

Process[] notePadProcesses  = Process.GetProcessesByName("notepad.exe");
IntPtr activeWindowHandle = GetForegroundWindow();

if (notePadProcesses != null && notePadProcesses.Length > 0
    && notePadProcesses.Any(p=>p.MainWindowHandle == activeWindowHandle))
{
 // notepad is open in the foreground.
 switch = 1;
 // OPEN Calculator or whatever you need to.
}
else
{
 // notepad is either not open, or not open in the foreground.
}
基本上,我们使用C#friendly进程类来查找所有打开的记事本进程。 然后找出它是否是一个活跃的过程,并从那里开始


请小心使用activewindow逻辑,因为很多时候,它们会导致竞争条件,即当您确定某个进程处于活动状态并尝试执行某些操作时,它可能不再是活动进程。小心踩踏。

不起作用。。。找不到“any”(红色下划线,这是错误)“System.Array/”不包含“any”的定义,并且找不到接受“System.Array”类型的第一个参数的扩展方法“any”(是否缺少using指令或程序集引用?)my“using”这是我错过了什么吗?p:Thaaans爱你。。n、 不知道该怎么做。。。节目开始了。。。不管它已经做了什么。。。没办法知道出了什么问题…非常感谢你,这已经是第三天了。。。所以我有点沮丧,因为我没能完成这个。。。但是你们的帮助(来自你们所有人)让我了解了很多这个项目。。。所以真的。。。谢谢我会继续尝试…您需要包括“使用System.Linq;”使用Any()扩展方法。如果您仍然遇到问题,请通过代码片段告诉我们具体问题,我们将尽力提供帮助。
Process[] notePadProcesses  = Process.GetProcessesByName("notepad.exe");
IntPtr activeWindowHandle = GetForegroundWindow();

if (notePadProcesses != null && notePadProcesses.Length > 0
    && notePadProcesses.Any(p=>p.MainWindowHandle == activeWindowHandle))
{
 // notepad is open in the foreground.
 switch = 1;
 // OPEN Calculator or whatever you need to.
}
else
{
 // notepad is either not open, or not open in the foreground.
}