zoukankan      html  css  js  c++  java
  • Notepad++ plugin(插件)开发之消息HOOK (文件保存,文件打开,文件关闭)

    Notepad++ plugin(插件)开发之消息HOOK (文件保存,文件打开,文件关闭)

    Notepad++ 插件 开发(上一篇关于 notepad++ plugin(插件开发)的文章)

    (找了比较久才发现,记录一下 IS2120#CSDN )
    http://blog.csdn.net/is2120/article/details/7190482
    1. 在notepad++提供了一些hook消息,能够 用于通知plugin一些消息,诸如
    文件的打开,文件的保存等

    2. 如何利用这些消息(使用c++开发)
    在开发plugin时会有一些必须的函数。其中之一是
    typedef void (__cdecl * PBENOTIFIED)(SCNotification *);
    void __cdeclbeNotified(struct SCNotification *notifyCode);
    这个函数在编辑文件的时候总是会被调用。
    http://blog.csdn.net/is2120/article/details/7190482
    可以在这个函数里获取这些通知消息,完成自己想做的事情。

    http://blog.csdn.net/is2120/article/details/7190482

    //z 2012-6-6 10:25:22 AM is2120@csdn
    3. 文件的打开 (NPPN_FILEOPENED)
    这个消息只能提示你一个文件打开了,但是不能告知你文件是否载入好了。
    可以通过使用 NPPN_BUFFERACTIVATED 来提示文件文件已经载入,但是这个与FILEOPENED并不一样。
    NPPN_FILEOPENED sends a BufferID which a plugin should
    transparently use to retrieve information about a file, but not its contents.

    //z 2012-1-10 11:21 AM IS2120@CSDN
    详细信息如下:
    // Notification code
    #define NPPN_FIRST 1000
        #define NPPN_READY (NPPN_FIRST + 1// To notify plugins that all the procedures of launchment of notepad++ are done.
        //scnNotification->nmhdr.code = NPPN_READY;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = 0;

        #define NPPN_TBMODIFICATION (NPPN_FIRST + 2// To notify plugins that toolbar icons can be registered
        //scnNotification->nmhdr.code = NPPN_TB_MODIFICATION;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = 0;

        #define NPPN_FILEBEFORECLOSE (NPPN_FIRST + 3// To notify plugins that the current file is about to be closed
        //scnNotification->nmhdr.code = NPPN_FILEBEFORECLOSE;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = BufferID;

        #define NPPN_FILEOPENED (NPPN_FIRST + 4// To notify plugins that the current file is just opened
        //scnNotification->nmhdr.code = NPPN_FILEOPENED;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = BufferID;

        #define NPPN_FILECLOSED (NPPN_FIRST + 5// To notify plugins that the current file is just closed
        //scnNotification->nmhdr.code = NPPN_FILECLOSED;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = BufferID;

        #define NPPN_FILEBEFOREOPEN (NPPN_FIRST + 6// To notify plugins that the current file is about to be opened
        //scnNotification->nmhdr.code = NPPN_FILEBEFOREOPEN;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = BufferID;
        
        #define NPPN_FILEBEFORESAVE (NPPN_FIRST + 7// To notify plugins that the current file is about to be saved
        //scnNotification->nmhdr.code = NPPN_FILEBEFOREOPEN;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = BufferID;
        
        #define NPPN_FILESAVED (NPPN_FIRST + 8// To notify plugins that the current file is just saved
        //scnNotification->nmhdr.code = NPPN_FILESAVED;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = BufferID;

        #define NPPN_SHUTDOWN (NPPN_FIRST + 9// To notify plugins that Notepad++ is about to be shutdowned.
        //scnNotification->nmhdr.code = NPPN_SHUTDOWN;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = 0;

        #define NPPN_BUFFERACTIVATED (NPPN_FIRST + 10// To notify plugins that a buffer was activated (put to foreground).
        //scnNotification->nmhdr.code = NPPN_BUFFERACTIVATED;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = activatedBufferID;

        #define NPPN_LANGCHANGED (NPPN_FIRST + 11// To notify plugins that the language in the current doc is just changed.
        //scnNotification->nmhdr.code = NPPN_LANGCHANGED;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = currentBufferID;

        #define NPPN_WORDSTYLESUPDATED (NPPN_FIRST + 12// To notify plugins that user initiated a WordStyleDlg change.
        //scnNotification->nmhdr.code = NPPN_WORDSTYLESUPDATED;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = currentBufferID;

        #define NPPN_SHORTCUTREMAPPED (NPPN_FIRST + 13// To notify plugins that plugin command shortcut is remapped.
        //scnNotification->nmhdr.code = NPPN_SHORTCUTSREMAPPED;
        //scnNotification->nmhdr.hwndFrom = ShortcutKeyStructurePointer;
        //scnNotification->nmhdr.idFrom = cmdID;
            //where ShortcutKeyStructurePointer is pointer of struct ShortcutKey:
            //struct ShortcutKey {
            //  bool _isCtrl;
            //  bool _isAlt;
            //  bool _isShift;
            //  UCHAR _key;
            //};

        #define NPPN_FILEBEFORELOAD (NPPN_FIRST + 14// To notify plugins that the current file is about to be loaded
        //scnNotification->nmhdr.code = NPPN_FILEBEFOREOPEN;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = NULL;

        #define NPPN_FILELOADFAILED (NPPN_FIRST + 15)  // To notify plugins that file open operation failed
        //scnNotification->nmhdr.code = NPPN_FILEOPENFAILED;
        //scnNotification->nmhdr.hwndFrom = hwndNpp;
        //scnNotification->nmhdr.idFrom = BufferID;

        #define NPPN_READONLYCHANGED (NPPN_FIRST + 16)  // To notify plugins that current document change the readonly status,
        //scnNotification->nmhdr.code = NPPN_READONLYCHANGED;
        //scnNotification->nmhdr.hwndFrom = bufferID;
        //scnNotification->nmhdr.idFrom = docStatus;
            // where bufferID is BufferID
            //       docStatus can be combined by DOCSTAUS_READONLY and DOCSTAUS_BUFFERDIRTY

            #define DOCSTAUS_READONLY 1
            #define DOCSTAUS_BUFFERDIRTY 2

        #define NPPN_DOCORDERCHANGED (NPPN_FIRST + 16)  // To notify plugins that document order is changed
        //scnNotification->nmhdr.code = NPPN_DOCORDERCHANGED;
        //scnNotification->nmhdr.hwndFrom = newIndex;
        //scnNotification->nmhdr.idFrom = BufferID;

    #endif

    /z 2012-1-10 11:21 AM IS2120@CSDN

    http://blog.csdn.net/is2120/article/details/7190482
  • 相关阅读:
    django如何给上传的图片重命名(给上传文件重命名)
    Nginx 常见问题解决
    nginx 出现413 Request Entity Too Large问题的解决方法
    python判断一个对象是否可迭代
    InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClas...
    Android Studio中新建和引用assets文件
    android 登录效果
    Android (争取做到)最全的底部导航栏实现方法
    抽屉效果的导航菜单
    Android开发之自定义局部导航菜单
  • 原文地址:https://www.cnblogs.com/IS2120/p/6745960.html
Copyright © 2011-2022 走看看