Выделение выделенной строки в активном окне цветом C#(плагин notepad++)
Привет я делаю плагин notepad++ с использованием C#
что мне нужно, показать активное окно между данным номером строки в некотором цвете. Допустим, у меня есть строки № 2 и 8, затем он должен выделить экран блокнота ++ между строками № 2 и 8 зеленым цветом.
Чтение из активного окна
int length = (int)Win32.SendMessage(GetCurrentScintilla(), SciMsg.SCI_GETLENGTH, 0, 0);
IntPtr ptrToText = Marshal.AllocHGlobal(length + 10);
Win32.SendMessage(GetCurrentScintilla(), SciMsg.SCI_GETTEXT, length+10, ptrToText);
String InputFromActiveWindow = Marshal.PtrToStringAnsi(ptrToText);
код для фокусировки на выбранной строке
Win32.SendMessage(curScintilla, SciMsg.SCI_ENSUREVISIBLE, lineNumber, 0);
Win32.SendMessage(curScintilla, SciMsg.SCI_GOTOLINE, lineNumber, 0);
Win32.SendMessage(curScintilla, SciMsg.SCI_GRABFOCUS, 0, 0);
Win32.SendMessage(curScintilla, SciMsg.SCI_GRABFOCUS, 0, 0);
// Ответ
win32.SendMessage(PluginBase.nppData._scintillaMainHandle, SciMsg.SCI_MARKERDEFINE, 1, (int)SciMsg.SC_MARK_BACKGROUND);
Win32.SendMessage(PluginBase.nppData._scintillaMainHandle, SciMsg.SCI_MARKERSETBACK, 1, 0x99FF00);
for (int linetobeHighlighted = StartLine; linetobeHighlighted <= EndLine; linetobeHighlighted++)
{
Win32.SendMessage(PluginBase.nppData._scintillaMainHandle, SciMsg.SCI_MARKERADD, linetobeHighlighted, 1);
}
1 ответ
Для выделения выделенного текста используйте
Win32.SendMessage(PluginBase.GetCurrentScintilla(),
SciMsg.SCI_SETSELBACK, 1, 0xFFFF00);
Обратитесь к плагину Notepad++ - найдите и выделите текст для более подробной информации.