在 C# 上编写 Notepad++ 插件。使用 char *text 等参数调用 SCintilla

Posted

技术标签:

【中文标题】在 C# 上编写 Notepad++ 插件。使用 char *text 等参数调用 SCintilla【英文标题】:Writing Notepad++ plugin on C#. Call SCintilla with params like char *text 【发布时间】:2012-07-05 14:23:35 【问题描述】:

我正在 c# 上为 notepad++ 编写插件。我的插件创建一棵树来表示某些特定文本文件的结构。 我在调用带有(char* 文本)等参数的函数时遇到了一些问题。你能帮mw解决这个问题吗?

例如

SCI_GETLINE(int line, char *text)

    string st="";
    Win32.SendMessage(curScintilla, SciMsg.SCI_GETLINE, (int)line, st);

这种调用 raise 的方式是无效的字符串格式异常。

【问题讨论】:

如果有人遇到这个问题,请自己回答。我的插件在其他线程中工作,所以我必须使用编组来获取这个字符串。 【参考方案1】:

用:[MarshalAs(UnmanagedType.LPStr)] 标记参数。问题是您正在传递某种字符串类型的 unicode 字符串,该字符串类型不是字节 C 样式的空终止字符串。

【讨论】:

而不是字符串使用 StringBuilder,这就是它对我的工作方式

以上是关于在 C# 上编写 Notepad++ 插件。使用 char *text 等参数调用 SCintilla的主要内容,如果未能解决你的问题,请参考以下文章

在 InputBox 上编写的 ListBox 中搜索单词(C# VS)

Notepad++ Rtf 编辑插件

Notepad++ 插件 - 查找并突出显示文本

kinect2.0 基础篇第一篇 用C#在Visual Studio上编写关闭彩色图像的三色通道的某个通道

我在VS2017里面用C#在.net framework上编写了一个dll,我想编译,怎么解决?

我在VS2017里面用C#在.net framework上编写了一个dll,我想编译,怎么解决?