PowerShell を使用するソリューションと、 Autohotkeyを使用するソリューションの 2 つがあります。
オートホットキーのバージョン
私はこれを使用します;)カスタムキーとキーにバインドされたアクションを定義します。私のファイルには次のコードが含まれています:
^#n::
Run, Notepad
WinWaitActive Untitled - Notepad2
Send !e
Send p
return
notepad2 を実行し、Alt+E と P の押下をシミュレートします。これにより、自分で押すのと同じ方法で文字列が貼り付けられます。何らかの理由で、Ctrl+V を「押す」ことに問題がありました (もう覚えていません)。詳細については、Autohotkey の Web サイトをご覧ください。
PowerShell のバージョン
Notepad2のようなエディタを使用する必要があります。スイッチ/c
を使用すると、Notepad2 が起動し、クリップボードからテキストが貼り付けられます。
より便利にするために、tnp
次のように定義された
関数を使用します (-sta パラメーターを指定して PowerShell を実行する必要があることに注意してください。そうしないと、適切に機能しません)。
function tnp {
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[object]
$InputObject
)
begin { $objs = @() }
process { $objs += $InputObject }
end {
$old = Get-clipboard # store current value
$objs | out-string -width 1000 | Set-Clipboard
notepad /c
sleep -mil 500
$old | Set-Clipboard # restore the original value
}
}
function Set-Clipboard {
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$true,Position=0)][object]$s
)
begin { $sb = new-object Text.StringBuilder }
process {
$s | % {
if ($sb.Length -gt 0) { $null = $sb.AppendLine(); }
$null = $sb.Append($_)
}
}
end { Add-Type –a system.windows.forms; [windows.forms.clipboard]::SetText($sb.Tostring()) }
}
function Get-Clipboard {
Add-Type –a system.windows.forms
[windows.forms.clipboard]::GetText()
}
これらの関数を使用すると、次のようなものを実行できます。
# gets list of members, opens Notepad2 and pastes the content (members list)
(get-date) | gm | tnp
つまり、情報が返されて画面にフォーマットされる場合は、それを取得してメモ帳に貼り付けることができます。