İşte düzgün bir şekilde yapan kısa bir Windows programı . PowerShell'e uyarlanabilir olması gerekir ve zaman alırsam bu cevabı güncelleyebilirim, ancak doğrudan bu programı da kullanabilirsiniz.
Peki ya PowerShell? Başka bir uygulama kurmanıza gerek yok. Ne yazık ki, olacak Gözlerinde farklı bir komut dosyası bir yere oluşturmanız gerekir PATH
...
Kullanabileceğiniz kısa versiyon
ShowInNotepad.bat
Aşağıdaki içeriğe sahip bir toplu iş dosyası (örn. ) PATH
Oluşturup bir yere koyarsanız:
@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');
o zaman echo blah | ShowInNotepad
her yerden arayabilirsiniz !
Bunun , Windows'un (Vista +) en son sürümlerini kullandığınızı ve PowerShell'i devre dışı bırakmadığınızı veya .NET çerçevesini kaldırmadığınızı varsaydığını unutmayın . Başka bir deyişle, varsayılan bir Windows yüklemesi çalışacaktır.
Uzun açıklama ve alternatifler
Aklıma gelen en kolay yol yapıştırma ( Ctrl+ V) eylemini otomatikleştirmektir . Hangi en az bir cevabın zaten cevapladığı, ancak AHK'yi kullanan kişi - PowerShell'i kilitli bir şirket ortamında çalışmak için daha iyi bir şansa sahip olabilir.
Senaryoyu yazalım, tamam mı?
#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');
Çok basit, bu yüzden komut dosyasını zaten yorumlardan daha fazla açıklamaya zahmet etmeyeceğim.
kullanım
Kullanmak için sadece betiği bir .ps1
dosyaya (örn. ShowInNotepad.ps1
) Yerleştirmeniz, bir yere yerleştirmeniz ve sonra panoda görüntülemek istediğiniz metni yerleştirdikten PATH
sonra çağırmanız yeterlidir powershell ShowInNotepad.ps1
.
Örnek:
echo blah | clip && powershell ShowInNotepad.ps1
Ne yazık ki, PowerShell scriptlerinin çalıştırılması bazen zor olabilir (çalıştırma politikaları ve diğerleri). Bu nedenle, bu komut dosyasını doğrudan Komut İsteminden arayabileceğiniz veya hatta bir toplu iş dosyasına yerleştirebileceğiniz tek bir çizgide yoğunlaştırdım:
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');
ShowInNotepad.bat
Aşağıdaki içeriğe sahip bir toplu iş dosyası (örn. ) PATH
Oluşturup bir yere koyarsanız:
@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');
o zaman echo blah | ShowInNotepad
her yerden arayabilirsiniz !
more
Windows'a da yönlendirebilirsiniz.