首页 > 解决方案 > 如何在 ProcessID C# 上找到窗口句柄

问题描述

我正在尝试查找具有特定名称的进程,查看 Class: CTX WndClass 是否存在,如果存在.. 每 30 秒执行一次循环检查。

如果没有,请等待 30 秒检查它现在是否有,如果它没有关闭进程。

这是我到目前为止所拥有的,但它告诉我它在第 51 行期待“}”,我不明白为什么哈哈。

这就是问题,就在 else 之前:

private static void FindMain(int handle)
            {
                // Get the class.
                StringBuilder sbClass = new StringBuilder(256);
                GetClassName(handle, sbClass, sbClass.Capacity);

                if (sbClass.Length == 0)
                    System.Threading.Thread.Sleep(30000);
                foreach (var process in Process.GetProcessesByName("ARS.exe"))
                {
                    process.Kill();
                }
                else
                 FindMain(handle);
            }
        }

.

标签: c#

解决方案


您的代码应如下所示:

if (sbClass.Length == 0)
{
     System.Threading.Thread.Sleep(30000);
     foreach (var process in Process.GetProcessesByName("ARS.exe"))
     {
         process.Kill();
     }
}
else
{
     FindMain(handle);
}

你缺少一些花括号。一个'else'句子属于一个'if'句子,所以花括号必须匹配。

你真的应该用匹配的大括号更好地格式化你的代码,然后你会避免这样的问题。


推荐阅读