C#-在获取Adobe Creative Cloud的主窗口句柄时遇到问题

时间:2018-11-30 11:44:02

标签: c#

我正在一个项目中,目的之一是从桌面/任务栏隐藏Adobe Creative Cloud桌面界面。我熟悉您通常如何隐藏窗口,例如:

    public void Hide()
    {
        Process[] processRunning = Process.GetProcesses();

        foreach (Process pr in processRunning)
        {

            if (pr.ProcessName.Contains("foo"))
            {

                hWnd = pr.MainWindowHandle.ToInt32();
                ShowWindow(hWnd, SW_HIDE);

            }
        }
    }

现在,我了解到应用程序有时会返回hWnd id为0。这就是我得到的,为了解决这个问题,您通常会对进程使用Refresh()。再次适用于所有其他应用程序,但由于某些原因,它不适用于Adobe Creative Cloud。

我是否在这里缺少任何东西,是否还有其他解决方案,例如仅基于窗口标题隐藏窗口/进程(我已经搜索了两天,但是却似乎每个人都建议使用主窗口句柄)?如果您已经安装了Adobe CC,您可以尝试在系统上返回主窗口句柄,并让我知道您是否获得了0以外的值。(OS Win10-不确定这样做有什么帮助,但我想我提到了)< / p>

谢谢, 乌迈斯

1 个答案:

答案 0 :(得分:0)

您要查找的进程名称是Adobe Desktop Service,因此您的代码必须为

Process[] processRunning = Process.GetProcesses();

foreach (Process pr in processRunning)
{

    if (pr.ProcessName == "Adobe Desktop Service")
    {
        var hWnd = pr.MainWindowHandle.ToInt32();
        // hWnd.Dump(); // xxx.Dump() is for linqpad output
    }
}

尝试一下,让我知道

enter image description here