У меня есть 2 решения, одно из которых использует PowerShell, другое - Autohotkey .
Версия AutoHock
Я бы использовал это;) Вы определяете пользовательский ключ и действия, связанные с ключами. Мой файл содержит этот код:
^#n::
Run, Notepad
WinWaitActive Untitled - Notepad2
Send !e
Send p
return
Он запускает notepad2, а затем имитирует нажатие клавиш Alt + E и P. Это вставляет строку так же, как вы нажимаете ее самостоятельно. По какой-то причине у меня были некоторые проблемы с «нажатием» Ctrl + V (я больше этого не помню). Для получения дополнительной информации посетите веб-сайт Autohotkey.
Версия PowerShell
Вам необходимо использовать редактор, такой как Notepad2 . С переключателем /c
он запускает Блокнот2 и вставляет текст из буфера обмена.
Чтобы сделать его более полезным, я использую функцию tnp
, определенную так:
(обратите внимание, что вам нужно запустить PowerShell с параметром -sta, иначе они не будут работать некорректно)
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
Другими словами - если некоторая информация будет возвращена и отформатирована на экране, вы можете получить ее и вставить в блокнот.