当前位置:编程学习 > C#/ASP.NET >>

使用SendMessage获取文本失败!麻烦大家帮我看一下

部分代码如下:

struct CHARRANGE
{
long cpMin;
long cpMax;
}

struct TEXTRANGE
{
CHRANGE chrg;
string lpstrText;
}

CHARRANGE CR;
TEXTRANGE TR = new TEXTRANGE();

IntPtr hWndOutPut = FindWindowEx(MainWindowHandle, IntPtr.Zero, "RICHEDIT", "");

int lineCount = SendMessage(hWndOutPut, EM_GETLINECOUNT, 0, ref TR);
int lc = SendMessage(hWndOutPut, EM_LINELENGTH, 0, ref TR);
int charFrom = SendMessage(hWndOutPut, EM_LINEINDEX, lineCount - 1, ref TR);
int charEnd = charFrom + lc;

CR.cpMin = charFrom;
CR.cpMax = charEnd;
TR.chrg = CR;
TR.lpstrText = new String('\0',10240);

SendMessage(hWndOutPut, EM_GETTEXTRANGE, 0, ref TR);

[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, ref TEXTRANGE lParam);

其中MainWindowHandle是另外一个程序的主窗口的句柄,获取其中一个RichEdit的句柄后,想获得其中的文本,
但SendMessage执行后TR中lpstrText为空,请大家帮帮我,找出错误所在。 --------------------编程问答-------------------- MainWindowHandle
是否是正确的值? --------------------编程问答-------------------- 用spy++查看了,确定是正确的
取文本的行数也正确 --------------------编程问答-------------------- 我想问一下搂主,你问什么不先通过重载winproc函数,将消息接收回来后再将其赋值给你需要的地方呢? --------------------编程问答-------------------- 引用 :我想问一下搂主,你问什么不先通过重载winproc函数,将消息接收回来后再将其赋值给你需要的地方呢?

我学C#不久,不明白您的意思,如何重载winproc?有何作用?
谢谢
--------------------编程问答-------------------- 自己顶一次 --------------------编程问答-------------------- 自己顶一次! --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,