何度でもよみがえるメモ帳(ネタ)

とあるソフトを間違えて閉じてしまうことが頻発したため、終了してもゾンビのごとく蘇るようにしてみた。

もっと良い方法がありそう……。

# メモ帳を起動してイベントを購読する処理
[scriptblock]$startNotepad = {
    # メモ帳を起動
    [Diagnostics.Process]$notepadProc = 
        Start-Process -FilePath notepad -PassThru
    # 起動を待機
    $notepadProc.WaitForInputIdle() > $null
    # イベントを通知させる
    $notepadProc.EnableRaisingEvents = $true

    # Exited(終了時)のイベントを購読開始
    Register-ObjectEvent -InputObject $notepadProc -EventName Exited
}

# 無限ループ
while ($true) {
    # メモ帳を起動
    $startNotepad.Invoke()
    
    # 何かしらイベントが起きるまで待つ
    Wait-Event

    # 発生したイベント情報を取得して破棄(破棄しないと`Wait-Event`で待機しない)
    Get-Event | Remove-Event
}

PowerShellなり、Windows PowerShell ISEなりに貼り付けて実行すると、何回閉じても復活するメモ帳が起動する。

終了したい場合は、PowerShellのウィンドウでCtrl+Cを押すか、PowerShellそのものを終了する。


190111追記

そもそもイベントにする必要が無かった。

# 無限ループ
while ($true) {
    # メモ帳を起動
    [Diagnostics.Process]$notepadProc = Start-Process -FilePath notepad -PassThru
    # 終了を待機
    $notepadProc.WaitForExit()
}