【问题标题】:C# and win32 API. Switch between two desktops. How to get back to the original desktop?C# 和 win32 API。在两个桌面之间切换。如何回到原来的桌面?
【发布时间】:2011-11-16 21:14:36
【问题描述】:

我正在编写一个小程序来创建一个新的 Windows 桌面,切换到它并等待几秒钟,然后切换回原来的桌面。我已经设法创建并切换到新桌面,但没有再回到原来的桌面。我在 C# 中使用 win32 API 并导入 DLL。我认为 GetDesktopWindow() 可以让我获得原始桌面的句柄,但它对我不起作用。

这是我要开始工作的代码 sn-p。

    public IntPtr createDesktop(string name)
    {
        return CreateDesktop(name, IntPtr.Zero, IntPtr.Zero, 0, (long)DESKTOP_ACCESS_MASK.GENERIC_ALL, IntPtr.Zero);
    }

    public IntPtr getCurrentDesktop()
    {
        return GetDesktopWindow();
    }

    public void switchDesktop(IntPtr desktop)
    {
        SwitchDesktop(desktop);
    }

    main()
    {
      IntPtr newDesktop = createDesktop("Test");
      IntPtr oldDesktop = getCurrentDesktop();
      switchDesktop(newDesktop);
      switchDesktop(oldDesktop);
    }

【问题讨论】:

    标签: c# winapi


    【解决方案1】:

    桌面窗口是显示桌面背景的窗口。它与桌面本身不同。您需要更改getCurrentDesktop() 以获取桌面本身的句柄,而不是桌面上的窗口(虽然是一个特殊的窗口)。

    我认为您可以在切换到新桌面之前使用GetThreadDesktop() 获取当前桌面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      相关资源
      最近更新 更多