Community

    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    Create a Msg box in Notepad++ Macros

    General Discussion
    macro msgbox macros
    3
    3
    2443
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Anwesh Gangula
      Anwesh Gangula last edited by

      I have a macro that finds 's and replaces few strings. Below is the code. What I want Notepad++ to do is to show a message box if it doesn’t find the string “_last”. How to achieve this?

              <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
          <Action type="3" message="1601" wParam="0" lParam="0" sParam="_last" />
          <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
          <Action type="3" message="1702" wParam="0" lParam="1024" sParam="" />
          <Action type="3" message="1701" wParam="0" lParam="1" sParam="" />
      

      PS: I have found a very old post where it says that an older version of notepad++ shows a pop-up window on each step of a macro.

      Scott Sumner 1 Reply Last reply Reply Quote 1
      • Scott Sumner
        Scott Sumner @Anwesh Gangula last edited by

        @Anwesh-Gangula

        The short answer is “You can’t”.

        However, if you have the Find window open when you run the macro, when text is not found, it will show it in red at the bottom of the window, e.g. Find: Can’t find the text “_last”.

        Perhaps the NppExec plugin could be of assistance here, although I am not familiar enough with it to know (maybe someone else?). A quick look at its docs had nothing leap out at me about message box functionality…

        If you will consider a scripting solution to your problem, you will often find a “message box” function there. For example, in Pythonscript there is notepad.messageBox():

        Notepad.messageBox(message[, title[, flags]]) → MessageBoxFlags 
        Displays a message box with the given message and title.
        
        Flags can be 0 for a standard ‘OK’ message box, or a combination of MESSAGEBOXFLAGS. title is “Python Script for Notepad++” by default, and flags is 0 by default.
        
        Returns: 
        A RESULTxxxx member of MESSAGEBOXFLAGS as to which button was pressed. 
        

        Thus you could script the solution to your entire problem, and not use macros at all…

        1 Reply Last reply Reply Quote 0
        • Дмитрий Трошин194
          Дмитрий Трошин194 last edited by

          For text processing, I use the jN plug-in for Notepad ++.
          https://github.com/sieukrem/jn-npp-plugin
          But it allows you to process text in the editor using JavaScript.
          For example, cut lines longer than 300 characters:

          function InputBox(psTxt, psCapt, psVal) {
          var rv = psVal;
          var so = new ActiveXObject(“MSScriptControl.ScriptControl”);
          so.Language = ‘VBScript’;
          var vCode =
          ’ Function getInputNumber() \n’+
          ’ val = InputBox(“‘+psTxt+’”,“‘+psCapt+’”,“‘+psVal+’”) \n’+
          ’ getInputNumber = val \n’+
          ‘End Function \n’;
          so.AddCode(vCode);
          rv = parseInt(so.Run(“getInputNumber”));
          return rv;
          }

          // удаляем строки которые длинее n символов
          function rowsOverLengthRemote(psOper) {
          var vOLen = 300;
          if(!psOper) { psOper = 1; }
          vOLen = InputBox(‘Input length’,“For very long rows”,vOLen);
          vOLen = parseInt(vOLen);
          if(vOLen <= 40) {
          return;
          }
          // debugger;
          // return;
          var vTextAll = Editor.currentView.text;
          var vArr = vTextAll.split(‘\n’);
          var vTextNeed = ‘’;
          var vLine = ‘’;
          for(var i = 0; i<vArr.length; i++) {
          vLine = vArr[i];
          if(vLine.length <= vOLen) {
          vTextNeed = vTextNeed + ‘\n’ + vLine;
          } else {
          if(psOper == 2) {
          message(“Cut string N: “+i+’ length” ‘+vLine.length+’ >> ‘+vLine.substring(0, 500));
          vTextNeed = vTextNeed + ‘\n’ + vLine.substring(0,vOLen);
          } else if(psOper == 1) {
          message("Kill string N: "+i+’ length” ‘+vLine.length+’ >> '+vLine.substring(0, 500));
          }

          	}
          }
          Editor.currentView.text = vTextNeed;    
          

          }

          var myKillVeryLengthRows = {
          text: “Удалить строки длинее N \tCtrl+Shift+K”,
          ctrl: true, shift: true, alt: false,
          key: 0x4B, // “K key”
          cmd: rowsOverLengthRemote
          };

          addHotKey(myKillVeryLengthRows);
          scriptsMenu.addItem(myKillVeryLengthRows);

          function rowsOverLengthCut() { rowsOverLengthRemote(2); }
          var myCutVeryLengthRows = {
          text: "Обрезать строки длинее N ",
          cmd: rowsOverLengthCut
          };
          scriptsMenu.addItem(myCutVeryLengthRows);

          It also has the ability to display messages:

          • JavaScript alert (‘Message’)
          • status (‘Message’); - in the status bar N ++
          • message (“Message”) - output to the man-made message box (my development):
            http://prntscr.com/j6s9j9
          1 Reply Last reply Reply Quote 1
          • First post
            Last post
          Copyright © 2014 NodeBB Forums | Contributors