Mã này làm việc cho tôi, bằng cách sử dụng Demo C dự án # bạn tìm thấy ở Notepad ++ web:
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);
- Lấy chiều dài của văn bản.
- Phân bổ một số bộ nhớ cho văn bản.
- Sử dụng độ dài và con trỏ trước đó, tải văn bản từ Notepad.
- Với Console.WriteLine bạn in tin nhắn hoặc làm bất cứ điều gì bạn cần.
- Giải phóng bộ nhớ bạn đã phân bổ trước đó.
Cập nhật: http://www.scintilla.org/ScintillaDoc.html#SCI_GETTEXT
Nó cần thiết để alloc một byte thêm cho cuối dòng ^^
Nguồn
2016-02-22 12:26:47
Tôi nghĩ Notepad ++ được viết bằng C++, chính xác cho tôi nếu tôi sai. Bạn sẽ gọi API không được quản lý của mình từ mã được quản lý và muốn chúng tôi giúp bạn với mã? – oleksii
Tôi đang sử dụng mẫu C# mà bạn tìm thấy ở đây: http: //sourceforge.net/projects/sourcecookifier/files/other%20plugins/NppPlugin.NET.v0.5.zip/download – MoShe
tắt chủ đề: một trong những dòng trên cùng trong tập tin Readme nói "** Hãy quên đi tất cả các phiên bản trước của gói này - đây là một cách tiếp cận hoàn toàn mới! **" Điều này thật đáng sợ! – oleksii