Ten kod pracował dla mnie, używająC# projekt demo C można znaleźć w Notepad ++ internetowej:
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);
- Pobiera długość tekstu.
- Przydziel trochę pamięci dla tekstu.
- Używając długości i poprzedniego wskaźnika, pobierz tekst z Notatnika.
- Za pomocą Console.WriteLine wydrukujesz wiadomość lub wykonasz, czego potrzebujesz.
- Uwolnij pamięć, którą wcześniej przydzieliłeś.
Aktualizacja: http://www.scintilla.org/ScintillaDoc.html#SCI_GETTEXT
jest to potrzebne do Alloc dodatkowy bajt na końcu linii ^^
myślałem Notepad ++ został napisany w języku C++, poprawcie mnie jeśli się mylę. Czy zamierzasz nazwać jego niezarządzane API z kodu zarządzanego i chcesz, żebyśmy pomogli ci z tym kodem? – oleksii
Używam szablonu C#, który można znaleźć tutaj: http: //sourceforge.net/projects/sourcecookifier/files/other%20plugins/NppPlugin.NET.v0.5.zip/download – MoShe
off topic: jeden z najwyższych linii w pliku Readme jest napisane: "** Zapomnij o wszystkich poprzednich wersjach tego pakietu - to zupełnie nowe podejście! **" To jest przerażające! – oleksii