notepad ++插件 - 阅读所有文档的文本

时间:2012-01-05 23:17:01

标签: c# c++ plugins notepad++

我正在使用c#template http://sourceforge.net/projects/sourcecookifier/files/other%20plugins/NppPlugin.NET.v0.5.zip/download编写一个记事本++插件。

有谁知道如何读取所有当前文档文本,因为我需要将所有文本读取为字符串?

有没有人知道读取当前文档文本的功能?

2 个答案:

答案 0 :(得分:5)

引用Scintilla API文档可以让您指出正确的方向:

http://www.scintilla.org/ScintillaDoc.html#SCI_GETTEXT

您链接的演示项目有一个发送消息的示例。

答案 1 :(得分:2)

这段代码对我有用,使用你在Notepad ++ web上找到的Demo C#项目:

int length = (int) Win32.SendMessage(GetCurrentScintilla(), SciMsg.SCI_GETLENGTH, 0, 0);
IntPtr ptrToText = Marshal.AllocHGlobal(length+1);
Win32.SendMessage(GetCurrentScintilla(), SciMsg.SCI_GETTEXT, length, ptrToText);
string textAnsi = Marshal.PtrToStringAnsi(ptrToText);
Console.WriteLine(textAnsi);
Marshal.FreeHGlobal(ptrToText);
  1. 获取文字的长度。
  2. 为文本分配一些记忆。
  3. 使用长度和上一个指针,从记事本中获取文本。
  4. 使用Console.WriteLine,您可以打印消息,也可以根据需要进行操作。
  5. 释放先前分配的内存。
  6. 更新:http://www.scintilla.org/ScintillaDoc.html#SCI_GETTEXT

    需要为行尾^^

    分配一个额外的字节