PowerShellで、自分のコンソールウィンドウを最小化、最大化、元に戻す。
PowerShellで、Win32APIのSendMessage()を使う方法もありますが、ここでは、Win32APIを使わない方法で。
$process=[System.Diagnostics.Process]::GetCurrentProcess()
$hwnd=$process.MainWindowHandle
if($hwnd -eq 0){
$title=$Host.UI.RawUI.WindowTitle
$Host.UI.RawUI.WindowTitle+=(new-object random).next()
$process=ps|where {$_.MainWindowTitle -eq $Host.UI.RawUI.WindowTitle}
$Host.UI.RawUI.WindowTitle=$title
$hwnd=$process.MainWindowHandle
}
$WM_SYSCOMMAND=274
$SC_MINIMIZE=61472
$SC_MAXIMIZE=61488
$SC_RESTORE=61728
if($hwnd){
[void] [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$message=[System.Windows.Forms.Message]::Create($hwnd,$WM_SYSCOMMAND,$SC_MINIMIZE,0)
$nativeWindow=new-object System.Windows.Forms.NativeWindow
$nativeWindow.DefWndProc([ref]$message)
$nativeWindow=$null
}
これで、一応、動きますが、これで良いのか、悪いのか。。。
« スクリプトからコンソールウィンドウの「すべて選択」「コピー」「貼り付け」 | トップページ | PowerShellの.PS1ファイルの関連付け(その4) »