如何通过使用c双击桌面来隐藏桌面图标#

问题描述:

我想知道是否有方法来切换桌面图标以在双击桌面时显示/隐藏。类似于Stardock Fences中的做法。我希望使用visual c#来完成它。如何通过使用c双击桌面来隐藏桌面图标#

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

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

+0

你是对的,最后一个链接似乎不工作,但无论如何感谢前2链接。 – murasaki5 2009-12-01 11:56:09

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

我想你将不得不重新启动资源管理器后,要使用

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

     Process.Start("explorer.exe"); 
+0

使用该注册表黑客将永久隐藏桌面图标。我希望它被切换显示/隐藏。 – murasaki5 2009-12-04 15:10:11

我不应用更改知道你将如何显示/隐藏用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”进程,而不关闭日志记录当前用户....希望它帮助!