我有 2 个解决方案,一个使用 PowerShell,另一个使用Autohotkey。
自动热键版本
我会使用这个 ;) 您定义自定义键和绑定到键的操作。我的文件包含以下代码:
^#n::
Run, Notepad
WinWaitActive Untitled - Notepad2
Send !e
Send p
return
它运行 notepad2,然后模拟按 Alt+E 和 P。粘贴字符串的方式与您自己按它的方式相同。由于某种原因,我在“按下”Ctrl+V 时遇到了一些问题(我不记得了)。有关更多信息,请查看 Autohotkey 的网站。
PowerShell 版本
您需要使用像Notepad2这样的编辑器。使用 switch/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
换句话说——如果某些信息会被返回并格式化到屏幕上,你可以得到它并粘贴到记事本上。