2013-05-08 64 views
2

我正在寫一個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#。

任何指導讚賞。

謝謝。

回答

0

我還沒有經過閃爍石。但我用了簡單的方法。我用它來創建,您可能需要查找有關發送消息的更多信息。

如果文件不存在於目錄中,請在開始之前創建文件。否則它會要求用戶確認。

參數的過程應該從第一和接下來的標籤有所不同:

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

0

您必須發送消息不是到Scintilla控件,而是記事本本身。 像這樣:

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

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

相關問題