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

keshuiyun 2007-01-03 02:28:39
部分代码如下:

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为空,请大家帮帮我,找出错误所在。
...全文
282 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
keshuiyun 2007-01-04
  • 打赏
  • 举报
回复
自己顶一次!
keshuiyun 2007-01-04
  • 打赏
  • 举报
回复
自己顶一次
keshuiyun 2007-01-03
  • 打赏
  • 举报
回复
引用 :我想问一下搂主,你问什么不先通过重载winproc函数,将消息接收回来后再将其赋值给你需要的地方呢?

我学C#不久,不明白您的意思,如何重载winproc?有何作用?
谢谢
cuiyihao 2007-01-03
  • 打赏
  • 举报
回复
我想问一下搂主,你问什么不先通过重载winproc函数,将消息接收回来后再将其赋值给你需要的地方呢?
keshuiyun 2007-01-03
  • 打赏
  • 举报
回复
用spy++查看了,确定是正确的
取文本的行数也正确
wuhuabucai 2007-01-03
  • 打赏
  • 举报
回复
MainWindowHandle
是否是正确的值?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧