Windows 11 プレビュー版で色々と検証していますが、今回はスタートメニューで(初期状態で)ピン留めされているアプリを全て外すのをコマンドで出来ないか検証してみました。
※Windows 10の場合にはこちらの手順となります。
「(Powershell)Windows10でスタートメニューのタイルをコマンドで一括削除する方法を検証してみた」
(注)
今回色々と頑張ってみましたが、コマンドを使って一気にピン留めを外した状態にすることが出来ませんでした。。。。orz
どうやらスタートメニューを管理している「StartMenuExperienceHost.exe」が強化?されているようでshellオブジェクト(コマンド)からの操作が受け付けませんでした。。。(^_^;)

shellオブジェクト(コマンド上)では「スタートメニューからピン留めを外す」があるのですが、
実際にはアクセス拒否されます。
ちなみにWindows 10では正常に完了するコマンドです。
その為、苦肉の策としてSendkeyを用いてPRA風に動作するPowershellコマンドを作成してみました。
<検証環境>
Windows 11 Pro ビルド 22000.160
#Sendkey実行とアクティブウィンドウを監視する為の各種ライブラリを読み込む
「指定回数」というのが環境変数「$count」で定義しています。
※検証環境では、初期で24個のアプリがピン留めされていましたのでキリ良く25という数字を定義しています。
処理実行中はアクティブウィンドウの監視をしていて、ウィンドウが切り替わると処理が中断するような形をとっています。
その為、処理実行中は必ずキーボードやマウスの操作はしないように注意が必要です。
※どれくらい処理時間がかかるかは「$count」の定義によって変わるので、それを計算して最初に画面表示するようにしています。25で定義した場合だと「55秒」程で完了する計算です。
<実際の実行画面>

<正常終了例>

<異常終了例>

とりあえずは意図したように動作しましたが、キーボードやマウス操作でアクティブウィンドウが変更しただけで処理が失敗するので、あまり使い勝手がいいようなものじゃないかもです。。。。(T_T)
もうちょっと情報が出てきたら、上手いやり方がないか再度模索したいですね!!
という感じで今回の検証も終わりたいと思いますっ( ´ー`)フゥー...
次回はスタートメニューのカスタマイズが出来ないかを検証出来たら、と考えています!!
※Windows 10の場合にはこちらの手順となります。
「(Powershell)Windows10でスタートメニューのタイルをコマンドで一括削除する方法を検証してみた」
(注)
今回色々と頑張ってみましたが、コマンドを使って一気にピン留めを外した状態にすることが出来ませんでした。。。。orz
どうやらスタートメニューを管理している「StartMenuExperienceHost.exe」が強化?されているようでshellオブジェクト(コマンド)からの操作が受け付けませんでした。。。(^_^;)

shellオブジェクト(コマンド上)では「スタートメニューからピン留めを外す」があるのですが、
実際にはアクセス拒否されます。
ちなみにWindows 10では正常に完了するコマンドです。
その為、苦肉の策としてSendkeyを用いてPRA風に動作するPowershellコマンドを作成してみました。
<検証環境>
Windows 11 Pro ビルド 22000.160
ClearAllStartMenuPinnedProgram.ps1
#カウンタ定義 「count」で定義されている数までスタートメニューのピン留め解除を実施
$i = 1
$count = 25
$DoTime = 5 + $count * 2
Write-Host "処理を開始します.処理中はキーボード・マウスを一切操作しないようにしてください. `r`n" -ForegroundColor Red -BackgroundColor White
Write-Host "処理完了まで最大 ${DoTime} 秒程かかります. `r`n" -ForegroundColor Red -BackgroundColor White
Start-Sleep -Seconds 3
#Sendkey実行とアクティブウィンドウを監視する為の各種ライブラリを読み込む
add-type -AssemblyName System.Windows.Forms
$code = @'
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, out int ProcessId);
'@
Add-Type $code -Name Utils -Namespace Win32
#Windowsキー 入力
[System.Windows.Forms.SendKeys]::SendWait("^{ESC}")
Start-Sleep -Milliseconds 500
#TABキー 入力
[System.Windows.Forms.SendKeys]::SendWait("{TAB}")
Start-Sleep -Milliseconds 500
#アクティブなウィンドウハンドルを取得する
$Hwnd1 = [Win32.Utils]::GetForegroundWindow()
$IntHwnd1 = $Hwnd1.ToInt32()
#Write-Host "IntHwnd1:${IntHwnd1}"
#右クリック(Shift+F10)キー 入力
[System.Windows.Forms.SendKeys]::SendWait("+{F10}")
Start-Sleep -Milliseconds 500
#Enterキー 入力
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
Start-Sleep -Seconds 1
#アクティブなウィンドウハンドルを取得する
$Hwnd2 = [Win32.Utils]::GetForegroundWindow()
$IntHwnd2 = $Hwnd2.ToInt32()
#Write-Host "IntHwnd2:${IntHwnd2}"
While (($IntHwnd2 -eq $IntHwnd1) -and ($i -le $count)){
#右クリック(Shift+F10)キー 入力
[System.Windows.Forms.SendKeys]::SendWait("+{F10}")
Start-Sleep -Milliseconds 500
#Enterキー 入力
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
Start-Sleep -Seconds 1
#アクティブなウィンドウハンドルを取得する
$Hwnd2 = [Win32.Utils]::GetForegroundWindow()
$IntHwnd2 = $Hwnd2.ToInt32()
#Write-Host "IntHwnd2:${IntHwnd2}"
$i = $i + 1
#Write-Host "i:${i} `r`n"
}
#途中で処理が中断された場合のメッセージ表示
If($i -ne ($count + 1)){
Write-Host "処理が中断されました.キーを押して画面を閉じてください `r`n" -ForegroundColor Red -BackgroundColor White
pause
exit
}
#正常に処理が終了した場合のメッセージ表示
Write-Host "処理を終了します. `r`n" -ForegroundColor Yellow
Write-Host "3秒後にPowershell画面を閉じます. `r`n" -ForegroundColor Yellow
Start-Sleep -Seconds 3
<解説>
基本的な処理は「Windowsキー」・「右クリック」・「Enter」キーをそれぞれ順番に入力していき、指定回数実行するような形となります。「指定回数」というのが環境変数「$count」で定義しています。
※検証環境では、初期で24個のアプリがピン留めされていましたのでキリ良く25という数字を定義しています。
処理実行中はアクティブウィンドウの監視をしていて、ウィンドウが切り替わると処理が中断するような形をとっています。
その為、処理実行中は必ずキーボードやマウスの操作はしないように注意が必要です。
※どれくらい処理時間がかかるかは「$count」の定義によって変わるので、それを計算して最初に画面表示するようにしています。25で定義した場合だと「55秒」程で完了する計算です。
<実際の実行画面>

<正常終了例>

<異常終了例>

とりあえずは意図したように動作しましたが、キーボードやマウス操作でアクティブウィンドウが変更しただけで処理が失敗するので、あまり使い勝手がいいようなものじゃないかもです。。。。(T_T)
もうちょっと情報が出てきたら、上手いやり方がないか再度模索したいですね!!
という感じで今回の検証も終わりたいと思いますっ( ´ー`)フゥー...
次回はスタートメニューのカスタマイズが出来ないかを検証出来たら、と考えています!!
スポンサードリンク
コメント