mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-12-17 17:55:28 +00:00
* move logic to json template
- remove Invoke-WPFToggle.ps1
- generalize Get-WinUtilToggleStatus
- add bingsearch reg key for testing
- use Invoke-WinUtilTweaks for actions
- replace Add-Click with checked & unchecked to make undo work
* add reg params for toggles into tweaks.json
- add all reg keys to tweaks.json into existing toggle entry
- remove unneeded scripts
* fix HKU
- load HKU if needed (for tweaks & GetToggleStatus)
- remove unneeded Invoke-WinUtilNumLock
- has loaded HKU does not load/not stay loaded
* add a lot of error handling
* Bugfix: New-PSDrive seems to return the "hku" itself so weirdly gets prepended to the return value so the result becomes ("hku", $false). In powershell pretty much every variable that exists is interpreted as $true so the toggle for numlock got incorrectly checked
* globally fix HKU error & minimize console feedback
- fix HKU issue globally
- remove some console logs, change some others to write-debug
* update Explorerrefresh
- change Invoke-WinUtilExplorerRefresh to handle refresh and restart
- add restart logic to window snapping Flyout & Suggestions
- rename Invoke-WinUtilExplorerRefresh to Invoke-WinUtilExplorerUpdate
* add explorer restart where needed to take effect
add explorer restart logic for hidden files + Fileextension toggles
* fix missing theme change logic in darkmode toggle
* fix window snapping
- fix issue defining WindowArrangementActive as dword instead of string
* fix bing search
- switch bing search enabled/disabled values
* add a little bit of error handling
- add error handling for Get-WinUtilToggleStatus
---------
Co-authored-by: Marterich <47688561+Marterich@users.noreply.github.com>
44 lines
1.3 KiB
PowerShell
44 lines
1.3 KiB
PowerShell
function Invoke-WinUtilExplorerUpdate {
|
|
<#
|
|
.SYNOPSIS
|
|
Refreshes the Windows Explorer
|
|
#>
|
|
|
|
param (
|
|
[string]$action = "refresh"
|
|
)
|
|
|
|
if ($action -eq "refresh") {
|
|
Invoke-WPFRunspace -DebugPreference $DebugPreference -ScriptBlock {
|
|
# Send the WM_SETTINGCHANGE message to all windows
|
|
Add-Type -TypeDefinition @"
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
public class Win32 {
|
|
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
|
|
public static extern IntPtr SendMessageTimeout(
|
|
IntPtr hWnd,
|
|
uint Msg,
|
|
IntPtr wParam,
|
|
string lParam,
|
|
uint fuFlags,
|
|
uint uTimeout,
|
|
out IntPtr lpdwResult);
|
|
}
|
|
"@
|
|
|
|
$HWND_BROADCAST = [IntPtr]0xffff
|
|
$WM_SETTINGCHANGE = 0x1A
|
|
$SMTO_ABORTIFHUNG = 0x2
|
|
$timeout = 100
|
|
|
|
# Send the broadcast message to all windows
|
|
[Win32]::SendMessageTimeout($HWND_BROADCAST, $WM_SETTINGCHANGE, [IntPtr]::Zero, "ImmersiveColorSet", $SMTO_ABORTIFHUNG, $timeout, [ref]([IntPtr]::Zero))
|
|
}
|
|
} elseif ($action -eq "restart") {
|
|
# Restart the Windows Explorer
|
|
taskkill.exe /F /IM "explorer.exe"
|
|
Start-Process "explorer.exe"
|
|
}
|
|
}
|