2009-11-25 3 views
2

Я хотел знать, есть ли способ переключить значок рабочего стола, чтобы показать/скрыть, когда рабочий стол дважды щелкнул. Подобно тому, как это делается в Stardock Fences. Я хотел, чтобы это было сделано с использованием visual C#.Как скрыть значки на рабочем столе, дважды щелкнув на рабочем столе, используя C#

ответ

2

Вторая часть вашего вопроса (при двойном щелчке на рабочем столе) относительно проста. Вам необходимо установить процедуру крючка, определенную приложением, в цепочку крючков. Звучит довольно сложно, но подробно объясняется в найденном образце кода here. Вы можете загрузить исходный код here (для этого требуется бесплатная учетная запись).

Для первой части, скрывая/скрывая значки рабочего стола, я нашел несколько похожих образцов кода, например this, однако ни один из них не работает на моем компьютере, поэтому вам может понадобиться найти другое решение этой проблемы.

+0

Вы правы, последняя ссылка, похоже, не работает, но в любом случае спасибо за первые 2 ссылки. – murasaki5

0

Для скрытия значков на рабочем столе есть раздел реестра (посмотрите here).

Я думаю, вам придется перезапустить проводник после того, чтобы применить изменения, используя

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

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

с помощью этого реестра будет постоянно скрывать значки на рабочем столе. Я хотел, чтобы это было показано, чтобы показать/скрыть. – murasaki5

-1

я не знаю, как вы бы показать/скрыть значки на рабочем столе с помощью 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» без регистрации текущего пользователя от .... Надеюсь, что это помогает!

Смежные вопросы