我读通过我的发展项目中打开一个记事本的文字,这是我的代码记事本字符解码
const int WM_GETTEXT = 0x000D;
const int WM_GETTEXTLENGTH = 0x000E;
[DllImport("User32.dll", EntryPoint = "SendMessage")]
extern static int SendMessageGetTextLength(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
[DllImport("User32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Auto)]
extern static IntPtr SendMessageGetText(IntPtr hWnd, int msg, IntPtr wParam, [Out] StringBuilder lParam);
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
public static string GetText(IntPtr hwnd)
{
if (hwnd == IntPtr.Zero)
throw new ArgumentNullException("hwnd");
IntPtr handler = FindWindowEx(hwnd, new IntPtr(0), "Edit", null);
int length = SendMessageGetTextLength(handler, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero);
if (length > 0 && length < int.MaxValue)
{
length++;
StringBuilder sb = new StringBuilder(length);
SendMessageGetText(handler, WM_GETTEXT, (IntPtr)sb.Length, sb);
return sb.ToString();
}
return String.Empty;
}
它获取文本,但在一个特殊的编码。 例如,如果输入的文本是'hello',它就会得到'兴梀ȿڳㇺ'。 什么是这个文本的编码,所以我可以解码为ASCII?
有你使用记事本作为一个中间步骤,而不是直接打开文件流的原因是什么? – 2012-01-08 22:55:39
是的,我想获得文本,而用户正在写 – 2012-01-08 22:58:41
可能重复的[从Windows应用程序中的文本框刮]文本(http://stackoverflow.com/questions/8374531/scrape-text-from-textbox-in- Windows应用程序) – 2012-01-10 17:24:47