デスクトップをダブルクリックしたときに、デスクトップ アイコンの表示/非表示を切り替える方法があるかどうかを知りたいと思いました。Stardock Fences での方法と同様です。Visual C# を使用して実行したかったのです。
3 に答える
質問の 2 番目の部分 (デスクトップをダブルクリックしたとき) は比較的単純です。アプリケーション定義のフック プロシージャをフック チェーンにインストールする必要があります。かなり難しそうに聞こえますが、ここにあるコード サンプルで詳しく説明されています。ここからソースをダウンロードできます(無料のアカウントが必要です)。
最初の部分であるデスクトップ アイコンの非表示/非表示については、このような類似のコード サンプルがいくつか見つかりましたが、私の PC では動作しないようです。その問題の別の解決策を探すことをお勧めします。
デスクトップアイコンを非表示にするためのレジストリキーがあります(こちらをご覧ください)。
を使用して変更を適用するには、その後エクスプローラーを再起動する必要があると思います
Process[] proc = Process.GetProcessesByName("Explorer");
foreach(Process p in proc)
p.Kill();
Process.Start("explorer.exe");
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」プロセスをすばやく再起動します..お役に立てば幸いです!