无法在我的 C# 程序中使用 SendMessage_EX 两次
我面临一个非常奇怪的问题,无法弄清楚错误出在哪里。我使用 SendMessage_EX 来获取指定行的文本:
SendMessage_Ex(hr.Handle, EM_GETLINE, l, buffer);
然后我像这样调用该方法两次:
StringBuilder buffer = new StringBuilder(256);
SendMessage_Ex(hr.Handle, EM_GETLINE, 5, buffer);
StringBuilder buffer1 = new StringBuilder(256);
SendMessage_Ex(hr.Handle, EM_GETLINE, 4, buffer1);
它正确获取第 5 行的文本,但对于第 4 行,它什么也不返回(buffer1 为空)。 如果我反转它并首先获取第 4 行,然后获取第 5 行,它会返回第 4 行的文本,而第 5 行则不返回任何内容。
这很奇怪,我确信我犯了一个简单的错误,但错误在哪里? 我很感激任何帮助。 :)
I am facing a very strange problem and couldn't figure out where's the mistake. I'm using SendMessage_EX to get a specified line's text:
SendMessage_Ex(hr.Handle, EM_GETLINE, l, buffer);
then I call the method twice like this:
StringBuilder buffer = new StringBuilder(256);
SendMessage_Ex(hr.Handle, EM_GETLINE, 5, buffer);
StringBuilder buffer1 = new StringBuilder(256);
SendMessage_Ex(hr.Handle, EM_GETLINE, 4, buffer1);
It gets text of line 5 correctly but then for line 4, It returns nothing(buffer1 is empty).
If I reverse it and first get line 4 and then line 5, It returns the text of line 4 and nothing for line 5.
It's very strange and I'm sure I'm making a simple mistake, but where is the mistake?
I appreciate any help. :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
EM_GETLINE 消息希望将缓冲区的大小传递到它用于缓冲区的同一参数中。我不能只设置 StringBuilder 的 0 索引而不将其初始化为某个值(出现索引异常)。
这似乎有效:
The EM_GETLINE message wants the size of the buffer passed in the same parameter it uses for a buffer. I couldn't just set the 0 index of the StringBuilder without initializing it to some value (got an index exception).
This seems to work: