如果有辦法將ascii輸出指向Windows記事本。 場景: 應用程序啓動Windows記事本的記事本實例或找到一個。比應用程序推送一些文本消息到記事本,以便消息附加到打開的記事本文本。使用Windows記事本作爲輸出控制檯
回答
Raymond Chen有一個博客,並發表了一篇文章描述了類似的東西,也許你可以根據自己的需要調整它。 Link
編輯:從博客
using System;
using System.Diagnostics;
using System.Windows.Automation;
using System.Runtime.InteropServices;
class Program
{
static void Main(string[] args)
{
// Slurp stdin into a string.
var everything = Console.In.ReadToEnd();
// Fire up a brand new Notepad.
var process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = @"C:\Windows\System32\notepad.exe";
process.Start();
process.WaitForInputIdle();
// Find the Notepad edit control.
var edit = AutomationElement.FromHandle(process.MainWindowHandle)
.FindFirst(TreeScope.Subtree,
new PropertyCondition(
AutomationElement.ControlTypeProperty,
ControlType.Document));
// Shove the text into that window.
var nativeHandle = new IntPtr((int)edit.GetCurrentPropertyValue(
AutomationElement.NativeWindowHandleProperty));
SendMessage(nativeHandle, WM_SETTEXT, IntPtr.Zero, everything);
}
[DllImport("user32.dll", EntryPoint="SendMessage", CharSet=CharSet.Unicode)]
static extern IntPtr SendMessage(
IntPtr windowHandle, int message, IntPtr wParam, string text);
const int WM_SETTEXT = 0x000C;
}
看起來像個聰明的主意! – 2014-12-05 15:18:37
發現重播很有價值,但它是關於將文本放入窗口中,但不會追加。希望這個鏈接能幫助我解決「追加」要求,但我真的很感謝完整的答案。謝謝! http://stackoverflow.com/questions/10052804/append-text-to-memo-using-win-api – 2014-12-05 15:43:58
我無法理解你在找什麼。你是說你想要解決方案附加到目前在記事本中的任何文本?如果是這樣,你可以使用帶有WM_GETTEXT消息的SendMessage獲取記事本的當前文本,然後使用附加值WM_SETTEXT – ptsoccer 2014-12-05 15:47:04
相關的代碼可以將文本發送到Process
與SendKeys.SendWait
:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace SendKeysToProcess
{
class Program
{
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
static void Main(string[] args)
{
// Start Notepad process
Process notepad = new Process();
notepad.StartInfo.FileName = @"C:\Windows\Notepad.exe";
notepad.Start();
// Wait for notepad to start
notepad.WaitForInputIdle();
IntPtr p = notepad.MainWindowHandle;
ShowWindow(p, 1);
// Write some text to the Notepad window
SendKeys.SendWait("Hello World!");
}
}
}
設置它的附加值。如果光標錯位,最終是否會將文本轉儲到錯誤的位置?這可以通過在每封郵件前發送一個「Ctrl + End」按鍵來解決嗎? – David 2014-12-05 15:28:48
不僅錯誤的位置,但它可以發送擊鍵到錯誤的窗口完全如果一個不同的窗口獲得焦點。它只是產生擊鍵,而不是專門將數據發送到記事本窗口。 – 2014-12-05 15:32:02
它將密鑰發送到對焦窗口。 http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.sendwait(v=vs.110).aspx – 2014-12-05 15:38:09
- 1. 寫作控制檯輸出
- 2. 寫作控制檯輸出(空格分隔文本)使用Python
- 3. Java - windows/linux中的控制檯輸出
- 4. 基本控制檯輸入和輸出
- 5. 在Windows上加速文本輸出,用於控制檯
- 6. 控制檯輸出
- 7. 使用WinAPI控制檯輸出WriteConsole
- 8. 在Windows中使用C++進行顏色控制檯輸出
- 9. 在記事本中顯示程序輸出而不是在控制檯上?
- 10. C#控制檯輸出不工作
- 11. C++控制檯輸出操作
- 12. NSBundle爲什麼控制檯輸出(空)?
- 13. 控制檯輸出爲HTML文件
- 14. 控制檯輸出格式
- 15. SharePoint控制檯輸出
- 16. Symfony控制檯輸出
- 17. 控制檯輸出錯誤
- 18. C#UTF8控制檯輸出
- 19. C#控制檯輸出
- 20. Ruby和控制檯輸出
- 21. 怪異控制檯輸出
- 22. MATLAB控制檯輸出
- 23. 顯示控制檯輸出?
- 24. 控制檯輸出Selenium Webdriver
- 25. 的IntelliJ控制檯輸出
- 26. 接收控制檯輸出
- 27. 控制檯輸出格式
- 28. 獲取控制檯輸出
- 29. vbscript輸出到控制檯
- 30. testdriven.net log4net控制檯輸出
具體記事本或只是一個外部程序? – R0MANARMY 2014-12-05 15:17:54
你將不得不與窗口句柄和其他Win32Api的東西。雖然可以,但使用標準的Windows窗體或WPF控件要容易得多。 – 2014-12-05 15:18:12
是否可以使用「TextBox」控件打開一個新窗口並在其中輸出文本?這與您的要求非常相似,而且要簡單得多。記事本選項的問題是任何人都可以輕易地干擾輸出。使用彈出選項,只要您需要,您可以將其設置爲只讀。 – Andrew 2014-12-05 15:24:26