试图从记事本++插件创建一个新选项卡

问题描述:

我正在写一个Notepad ++插件,并且需要为新文件创建一个新选项卡。我无法在文档中找到覆盖此内容的任何内容。试图从记事本++插件创建一个新选项卡

我来最接近的是:

IntPtr curScintilla = PluginBase.GetCurrentScintilla(); 
IntPtr documentPtr = Win32.SendMessage(curScintilla, SciMsg.SCI_CREATEDOCUMENT, 1, 1); 
Win32.SendMessage(curScintilla, SciMsg.SCI_SETDOCPOINTER, 0, documentPtr); 

但这种行为在当前标签页(我认为这是创建一个新的文件,并在该指向当前选项卡)。

我正在阅读http://www.scintilla.org/ScintillaDoc.html的“多个视图”部分,但我无法获得比上述更多的内容。我通常不用C#甚至Windows工作,所以我可能会漏掉一些明显的东西。我试着看看现有的插件的例子,但其中大部分似乎是用C++编写的,而不是C#。

任何指导赞赏。

谢谢。

我还没有经过闪烁石。但我用了简单的方法。我用它来创建,您可能需要查找有关发送消息的更多信息。

如果文件不存在于目录中,请在开始之前创建文件。否则它会要求用户确认。

参数的过程应该从第一和接下来的标签有所不同:

File.Create(yourNewFile); //or yourNextNewFile in case of second, third, so on.. 
Process notepadPlus = new Process(); 

notepadPlus.StartInfo.FileName = "notepad++.exe"; 

对于作为第一个文件使用(使用新的会话新的实例 - 无需任何旧标签):

notepadPlus.StartInfo.Arguments = @"-multiInst -nosession yourNewFile"; 

对于下一个文件使用(仅创建新选项卡):

notepadPlus.StartInfo.Arguments = @"yourNextNewFile"; 

/* Start the process */ 
notepadPlus.Start(); 
+0

嗨,谢谢你的回复。不过,我认为这不会对我有用。我已经有一个记事本++实例正在运行 - 用户将会与我的插件进行交互。我需要在现有的npp实例内创建新的选项卡。 – woddle 2013-05-08 08:50:07

+0

然后你可以只使用第二个选项!即只有文件名选项,所有其他行保持不变。无论如何它只得到实例,对吧? – KbManu 2013-05-08 09:07:53

+0

它不觉得对我来说“正确”,但它的工作原理。绿色为你打勾,谢谢! – woddle 2013-05-08 09:59:07

您必须发送消息不是到Scintilla控件,而是记事本本身。 像这样:

Win32.SendMessage(PluginBase.nppData._nppHandle, NppMsg.NPPM_MENUCOMMAND, 0, NppMenuCmd.IDM_FILE_NEW); 

更多信息here包括使用的常量。