【问题标题】:How to hide desktop icons by double clicking the desktop using c#如何通过使用c#双击桌面来隐藏桌面图标
【发布时间】:2009-11-25 09:38:13
【问题描述】:

我想知道是否有办法在双击桌面时切换桌面图标以显示/隐藏。类似于在 Stardock Fences 中的操作方式。我希望使用 Visual c# 来完成。

【问题讨论】:

    标签: c# desktop icons double-click


    【解决方案1】:

    问题的第二部分(双击桌面时)相对简单。您需要将应用程序定义的挂钩过程安装到挂钩链中。听起来很困难,但在找到的代码示例 here 中有详细说明。您可能需要下载源代码here(需要一个免费帐户)。

    对于第一部分,桌面图标的隐藏/取消隐藏,我发现了几个类似的代码示例,例如 this,但是,在我的电脑上似乎没有一个可以工作,所以你可能想寻找其他解决方案来解决这个问题。

    【讨论】:

    • 你说得对,最后一个链接似乎不起作用,但还是感谢前 2 个链接。
    【解决方案2】:

    为了隐藏桌面图标,有一个注册表项(看看here)。

    我猜你必须在那之后重新启动你的资源管理器才能通过使用来应用更改

            Process[] proc = Process.GetProcessesByName("Explorer");
            foreach(Process p in proc)
                p.Kill();
    
            Process.Start("explorer.exe");
    

    【讨论】:

    • 使用该注册表黑客将永久隐藏桌面图标。我希望它可以切换为显示/隐藏。
    【解决方案3】:

    我不知道您将如何使用 C# 显示/隐藏桌面图标,但是我已经阅读了一些关于如何使用电阻键进行操作的文章。使用注册表项方法的问题是必须重新启动“Explorer.exe”进程才能使更改生效。幸运的是,我在网上找到了一个代码示例:

    On Error Resume Next
    
    ' Kill Explorer.exe
    
    strComputer = "."
    
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'explorer.exe'")
    
    For Each objProcess in colProcessList
    objProcess.Terminate(1)
    Next
    
    ' Launch Explorer.exe
    
    Set objShell = CreateObject("Wscript.Shell") 
    
    objShell.Run "explorer.exe" 
    
    Set objShell = Nothing
    
    Wscript.exit
    

    该脚本将快速重新启动“Explorer.exe”进程,而无需注销当前用户......希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多