2012-01-05 14 views
5

Piszę notatnik ++ wtyczkę używając szablonu C# http://sourceforge.net/projects/sourcecookifier/files/other%20plugins/NppPlugin.NET.v0.5.zip/download.Notatnik ++ wtyczki - czytanie całego tekstu dokumentu

Czy ktoś wie, jak czytać cały tekst obecnego dokumentu, ponieważ potrzebuję czytać cały tekst do napisu?

Czy ktoś zna funkcję, która odczytuje bieżący tekst dokumentu?

+0

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

+0

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

+0

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

Odpowiedz

2

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); 
  1. Pobiera długość tekstu.
  2. Przydziel trochę pamięci dla tekstu.
  3. Używając długości i poprzedniego wskaźnika, pobierz tekst z Notatnika.
  4. Za pomocą Console.WriteLine wydrukujesz wiadomość lub wykonasz, czego potrzebujesz.
  5. 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 ^^

Powiązane problemy