Этот код работает для меня, используя # проект Demo C вы найдете в 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);
- Получить длину текста.
- Alloc некоторая память для текста.
- Используя длину и предыдущий указатель, получите текст из Блокнота.
- С Console.WriteLine вы печатаете сообщение или делаете нужный вам.
- Освободите память, которую вы выделили ранее.
Update: http://www.scintilla.org/ScintillaDoc.html#SCI_GETTEXT
Это необходимо, чтобы Alloc дополнительный байт для конца строки ^^
Я думал Notepad ++ был написан на C++, поправьте меня, если я ошибаюсь. Вы собираетесь называть его неуправляемые API из управляемого кода и хотите, чтобы мы помогли вам с кодом? – oleksii
Я использую шаблон C#, который вы нашли здесь: http: //sourceforge.net/projects/sourcecookifier/files/other%20plugins/NppPlugin.NET.v0.5.zip/download – MoShe
вне темы: одна из самых верхних строк в файле Readme говорится: «** Забудьте обо всех предыдущих версиях этого пакета - это совершенно новый подход! **« Это страшно! – oleksii