重新使用NppExec的控制台为Notepad ++开发一个单独的插件 - 它可以完成吗?

时间:2012-05-19 17:48:32

标签: plugins notepad++ nppexec

我将为notepad ++创建自己的插件。在我的插件中使用控制台是必要的,但我不想创建另一个,因为NppExec插件中有一个。所以我的问题是我可以从我自己的插件中使用NppExec控制台吗?

1 个答案:

答案 0 :(得分:0)

我从NppExec论坛https://sourceforge.net/projects/npp-plugins/forums/forum/672146/topic/5287950

得到了答案

<强>被修改 从上面的链接粘贴:

  

当然!您可以在NppExec中查看NppExecPluginMsgTester   来源并部分或全部使用其代码。该   NppExecPluginMsgTester使用内部声明的消息的“包装器”   “NppExec \ SRC \ PluginCommunication \ nppexec_msgs.h”。

这是NppExec源代码的一个例子:

#define  NPEM_PRINT             0x0401  // message
  /*
  Prints (shows) given text in NppExec's Console window. 
  You can separate text lines using _T('\n') or _T("\r\n").
  This text can be highlighted if NppExec's Console Highlight Filters are used.

  If plugin's state is "busy", this message is ignored.

  Example:

  const TCHAR* cszMyPlugin = _T("my_plugin");
  DWORD dwState = 0;
  CommunicationInfo ci = { NPEM_GETSTATE, 
                           cszMyPlugin, 
                           (void *) &dwState };
  ::SendMessage( hNppWnd, NPPM_MSGTOPLUGIN,
      (WPARAM) _T("NppExec.dll"), (LPARAM) &ci );

  if ( dwState == NPE_STATEREADY )
  {
    // the plugin is "ready"
    const TCHAR* szText = _T("Hello from my plugin!\n(test message)")
    CommunicationInfo ci = { NPEM_PRINT,
                             cszMyPlugin, 
                             (void *) szText };
    ::SendMessage( hNppWnd, NPPM_MSGTOPLUGIN,
        (WPARAM) _T("NppExec.dll"), (LPARAM) &ci );
  }
  */