Powershell 環境で、タイトル バーを非表示にしたり、少なくとも閉じるボタンを削除したりすることはできますか?
実行中にユーザーが「突っ込まない」ことを希望するスクリプトがいくつかあります。スクリプトを非表示で実行することを検討しましたが、システムは 1 分間停止したように見えたり、実際にはまだ内部で処理が行われているときに完全に完了したように見えたりします。
Powershell 環境で、タイトル バーを非表示にしたり、少なくとも閉じるボタンを削除したりすることはできますか?
実行中にユーザーが「突っ込まない」ことを希望するスクリプトがいくつかあります。スクリプトを非表示で実行することを検討しましたが、システムは 1 分間停止したように見えたり、実際にはまだ内部で処理が行われているときに完全に完了したように見えたりします。
poshcode.org にあるこのスクリプトを使用して、Windows コンソールの [閉じる] ボタンを無効にすることができます。ただし、ユーザーは引き続きタスクバーからコンソールを閉じることができ、ConEmu などのコンソールの代替品では機能しません。
$code = @'
using System;
using System.Runtime.InteropServices;
namespace CloseButtonToggle {
internal static class WinAPI {
[DllImport("kernel32.dll")]
internal static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool DeleteMenu(IntPtr hMenu,
uint uPosition, uint uFlags);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool DrawMenuBar(IntPtr hWnd);
[DllImport("user32.dll")]
internal static extern IntPtr GetSystemMenu(IntPtr hWnd,
[MarshalAs(UnmanagedType.Bool)]bool bRevert);
const uint SC_CLOSE = 0xf060;
const uint MF_BYCOMMAND = 0;
internal static void ChangeCurrentState(bool state) {
IntPtr hMenu = GetSystemMenu(GetConsoleWindow(), state);
DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND);
DrawMenuBar(GetConsoleWindow());
}
}
public static class Status {
public static void Disable() {
WinAPI.ChangeCurrentState(false); //its 'true' if need to enable
}
}
}
'@
Add-Type $code
[CloseButtonToggle.Status]::Disable()
PowerShell で Windows フォームを使用して、コントロール ボックスを非表示にすることができます。
[Void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object Windows.Forms.Form
$form.ControlBox = $false
$form.Text = "Test Form"
$Button = New-Object Windows.Forms.Button
次のようになります。
頭に浮かぶ唯一のオプションは、スクリプトを実行しているウィンドウを非表示にしてから、これをスクリプトに追加することです。
start-process powershell.exe -ArgumentList '-noprofile -command "&{get-content c:\temp\log.txt -Wait}"'
スクリプト出力をそのファイルにリダイレクトします。そのウィンドウでスクリプトの出力を見ることができますが、そのウィンドウで何をしてもスクリプトには影響しません。スクリプトの最後でログ ファイルを削除すると、ログ ウィンドウが閉じます。