在C# richtextbox中调用Win32 API SendMessage复制所选文本返回少一个字符
我正在尝试使用 win32 API SendMessage 复制活动窗口中的选定文本 如下所示
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, out int wParam, out int lParam);
int start,next;
SendMessage(activeWindowHandle, 0xB0, out start, out next);
这将返回所选文本的开始和结束字符位置。 这在记事本或任何 System.Windows.Forms.TextBox 中都可以正常工作。 但为 System.Windows.Forms.RichTextBox 调用此方法会返回少一个字符。 有人知道为什么吗?以及如何解决这个问题。
I am trying to copy the selected text in the active window using the win32 API SendMessage
as following
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, out int wParam, out int lParam);
int start,next;
SendMessage(activeWindowHandle, 0xB0, out start, out next);
This returns the starting and ending character position of the selected text.
This works fine in notepad or any System.Windows.Forms.TextBox.
But calling this for a System.Windows.Forms.RichTextBox returns one character less.
anyone know why?? and how to work around this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SendMessage 实际上应该是
wParam 和 lParam 实际上是输入,而不是输出。因此,你发送的是垃圾,很幸运能得到一些东西。
SendMessage should actually be
wParam and lParam are in fact inputs, not outputs. Hence, you're sending garbage, and lucky to get something back.