【问题标题】:Hide/Show desktop Items using c#使用 c# 隐藏/显示桌面项目
【发布时间】:2015-09-07 13:02:37
【问题描述】:

我使用以下程序使用 c# 来隐藏/显示桌面项。它工作正常。

public partial class Form1 : Form
{
    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr GetWindow(IntPtr hWnd, GetWindow_Cmd uCmd);
    enum GetWindow_Cmd : uint
    {
        GW_HWNDFIRST = 0,
        GW_HWNDLAST = 1,
        GW_HWNDNEXT = 2,
        GW_HWNDPREV = 3,
        GW_OWNER = 4,
        GW_CHILD = 5,
        GW_ENABLEDPOPUP = 6
    }
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

    private const int WM_COMMAND = 0x111;

    static void ToggleDesktopIcons()
    {
        var toggleDesktopCommand = new IntPtr(0x7402);
        IntPtr hWnd = GetWindow(FindWindow("Progman", "Program Manager"), GetWindow_Cmd.GW_CHILD);
        SendMessage(hWnd, WM_COMMAND, toggleDesktopCommand, IntPtr.Zero);
    }

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click_1(object sender, EventArgs e)
    {
        ToggleDesktopIcons();

    }

}

但我的问题是我的表单中只有一个按钮。如果我按下按钮,隐藏和显示桌面项目将发生在同一个按钮上。

我需要将这些显示和隐藏分开。这意味着我需要在表单中再创建一个按钮,所以我现在总共有 2 个按钮。如果我按下第一个按钮,我需要隐藏桌面项目。如果我按下第二个按钮,我需要显示桌面项目。我该怎么做?

【问题讨论】:

    标签: c# desktop-application


    【解决方案1】:

    您可以在 Form1 类中存储内部状态,例如一些 bool 属性。 如果您单击 Show 按钮并且 bool 属性表明您的项目已经显示 - 什么都不做,否则 ToggleDesktopIcons。隐藏按钮也是如此。

    【讨论】:

      【解决方案2】:

      this question中查看答案。

      答案包含一个 IsVisible 方法,可让您查看图标是隐藏还是显示。

      在显示按钮中:调用IsVisible,如果返回false,则执行ToggleDesktopIcons,否则返回。

      隐藏按钮中:调用IsVisible,如果返回true,则执行ToggleDesktopIcons,否则返回。

      您还可以使用调用 IsVisible 的结果来决定是否要启用/禁用显示和隐藏按钮。

      【讨论】:

        猜你喜欢
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2016-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多