Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 进程抛出Win32Exception”的列表;拒绝访问”;_C#_Wpf_Win32 Process - Fatal编程技术网

C# 进程抛出Win32Exception”的列表;拒绝访问”;

C# 进程抛出Win32Exception”的列表;拒绝访问”;,c#,wpf,win32-process,C#,Wpf,Win32 Process,我在VFP中有一个应用程序,它正在迁移到.NET c#,为此,我们必须为该应用程序迁移到桌面 vfp中的desktop one:它具有所有菜单,如果所选选项在.net上实现,则这些菜单会将该选项保存在SQLServer表中 wpf中的desktop 2:它有一个计时器,用于读取用户在desktop 1(vfp)上单击的选项 如果desktop 2找到一个选项,并且该选项与预期的用户匹配,它将尝试打开该选项并将其设置为最顶层 这工作正常,但有时抛出win32异常访问被拒绝 [ClassInterf

我在VFP中有一个应用程序,它正在迁移到.NET c#,为此,我们必须为该应用程序迁移到桌面

vfp中的desktop one:它具有所有菜单,如果所选选项在.net上实现,则这些菜单会将该选项保存在SQLServer表中

wpf中的desktop 2:它有一个计时器,用于读取用户在desktop 1(vfp)上单击的选项

如果desktop 2找到一个选项,并且该选项与预期的用户匹配,它将尝试打开该选项并将其设置为最顶层

这工作正常,但有时抛出win32异常访问被拒绝

[ClassInterface(ClassInterfaceType.AutoDual)]
[ProgId("MyClass")]
public class DesktopsAux
{
    public string[] Desktops;
    public string desktopname = "My App! .Net Desktop";
    public IntPtr hWnd; 

    public DesktopsAux()
    {
        try
        {
            var q = from d in Process.GetProcesses()
                         where d.MainWindowTitle.Contains(desktopname) 
                         select d.MainWindowTitle;

            Desktops = q.ToArray();
        }
        catch (NullReferenceException)
        {
        }
    }

    public bool DeskTopForUser(string userName)
    {
        //  The error happen here, performing this query
        var q = from d in Process.GetProcesses()
                where d.MainWindowTitle.Contains(desktopname)
                select new {d.MainWindowTitle , d.Handle};
        var list = q.ToList();
        var q2 = from a in list
                 where a.MainWindowTitle.Contains(userName)
                 select a;

        if (q2.Count() > 0)
        {
            hWnd = q2.First().Handle;
            return true;
        }
        return false;
    }
}

public class Desktop
{
    public string MainWindowTitle { get; set; }
    public IntPtr Handle { get; set; }
}
执行查询时,DeskTopForUser方法中发生错误

为什么会发生这种错误?
如何防止此错误?

可能是无法枚举的提升进程?“再见!”迈克尔多德·特克斯谢谢你的帮助,真的,我对这件事不太了解。是什么意思?