Windowsデスクトップをリストビューにする

Windowsマシンのデスクトップ表示をリストビューにするお話。

■ リストビューにする

下記のコードをbatファイルにして保存する。
起動する。
終わり!

スタートアップフォルダ(shell:startup)に保存しておけば、Windows起動時に自動でリストビューに切り替わる。

※Windows10で動作するのを確認済み。

WinApiをスクリプトから叩けるって恐ろしいよね。

@powershell -NoProfile -ExecutionPolicy Unrestricted "$s=[scriptblock]::create((gc \"%~f0\"|?{$_.readcount -gt 1})-join\"`n\");&$s" %*&goto:eof

Clear

$api = Add-Type -Name "Win32ApiFunctions" -PassThru -MemberDefinition @"
	[DllImport("user32.dll")]
	private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

	[DllImport("user32.dll")]
	private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

	private static IntPtr FindDesktop()
	{
		IntPtr hwnd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "Progman", "Program Manager");
		hwnd = FindWindowEx(hwnd, IntPtr.Zero, "SHELLDLL_DefView", null);
		return FindWindowEx(hwnd, IntPtr.Zero, "SysListView32", null);
	}

	public static void SetViewDesktop()
	{
		SendMessage(FindDesktop(), 4238, 2, 0);
	}
"@

$api::SetViewDesktop()