ecco un breve programma per Windows che lo fa correttamente (senza ostruire gli appunti). Dovrebbe essere adattabile a PowerShell e potrei aggiornare questa risposta se ho tempo, ma puoi anche usare direttamente quel programma.
Bene, che ne dici di PowerShell? Non è necessario installare un'altra applicazione. Purtroppo, si sarà necessario creare un file di script da qualche parte nel vostro PATH
...
Versione corta che puoi usare
Se si crea un file batch (ad es. ShowInNotepad.bat
) Con i seguenti contenuti e lo si inserisce da PATH
qualche parte:
@echo off
clip
powershell -Command $process = Start-Process -PassThru notepad;$SW_SHOW = 5;$sig = '[DllImport("""user32.dll""")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32;[Win32.NativeMethods]::ShowWindow($process.Id, $SW_SHOW) ^| Out-Null;Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.SendKeys]::SendWait('^^V');
puoi quindi chiamare echo blah | ShowInNotepad
da qualsiasi luogo!
Si noti che questo non presumere che si sta usando una versione recente-ish di Windows (Vista +) e non hanno disabilitato PowerShell o disinstallato il framework .NET. In altre parole, funzionerà un'installazione di Windows predefinita.
Spiegazione lunga e alternative
Il modo più semplice a cui riesco a pensare è automatizzare l'azione incolla ( Ctrl+ V). Quale almeno un'altra risposta sta già facendo, ma quella utilizza AHK: potresti avere più fortuna a far funzionare PowerShell in un ambiente aziendale bloccato.
Andiamo avanti con la sceneggiatura, sì?
#start notepad, get process object (to get pid later)
$process = Start-Process -PassThru notepad;
# activate Notepad window
# based on http://stackoverflow.com/a/4994020/1030702
# SW_SHOW activates and shows a window http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
$SW_SHOW = 5;
$sig = '[DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';
Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32;
[Win32.NativeMethods]::ShowWindow($process.Id, $SW_SHOW) | Out-Null;
# send a "Ctrl+V" keystroke to the active window
# from http://stackoverflow.com/a/17851491/1030702
Add-Type -AssemblyName System.Windows.Forms;
[System.Windows.Forms.SendKeys]::SendWait('^V');
È piuttosto semplice, quindi non mi preoccuperò di spiegare la sceneggiatura più di quanto già facciano i commenti.
uso
Per usarlo, devi solo posizionare lo script in un .ps1
file (ad esempio ShowInNotepad.ps1
), posizionarlo da qualche parte nel tuo PATH
e quindi chiamare powershell ShowInNotepad.ps1
dopo aver inserito il testo che desideri visualizzare negli Appunti.
Esempio:
echo blah | clip && powershell ShowInNotepad.ps1
Sfortunatamente, l'esecuzione degli script di PowerShell può talvolta essere difficile (criteri di esecuzione e tutto il resto). Pertanto, ho condensato questo script in un one-liner che puoi chiamare direttamente dal Prompt dei comandi o persino inserirlo in un file batch:
powershell -Command $process = Start-Process -PassThru notepad;$SW_SHOW = 5;$sig = '[DllImport("""user32.dll""")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32;[Win32.NativeMethods]::ShowWindow($process.Id, $SW_SHOW) ^| Out-Null;Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.SendKeys]::SendWait('^^V');
Se si crea un file batch (ad es. ShowInNotepad.bat
) Con i seguenti contenuti e lo si inserisce da PATH
qualche parte:
@echo off
clip
powershell -Command $process = Start-Process -PassThru notepad;$SW_SHOW = 5;$sig = '[DllImport("""user32.dll""")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32;[Win32.NativeMethods]::ShowWindow($process.Id, $SW_SHOW) ^| Out-Null;Add-Type -AssemblyName System.Windows.Forms;[System.Windows.Forms.SendKeys]::SendWait('^^V');
puoi quindi chiamare echo blah | ShowInNotepad
da qualsiasi luogo!
more
su Windows.