◀マクロトップへ
  • 155 Web辞書をエディタから直接ひく JScriptマクロ
    • 156 Re:Web辞書をエディタから直接ひく JScriptマクロ
      • 157 シリーズ化は大歓迎、そこでちょい提案など
        • 162 Re:シリーズ化は大歓迎、そこでちょい提案など
          • 167 Re2:シリーズ化は大歓迎、そこでちょい提案など
            • 172 Re3:シリーズ化は大歓迎、そこでちょい提案など
          • 168 Re2:シリーズ化は大歓迎、そこでちょい提案など
          • 169 Re2:シリーズ化は大歓迎、そこでちょい提案など
          • 170 Re2:シリーズ化は大歓迎、そこでちょい提案など
          • 171 Re2:シリーズ化は大歓迎、そこでちょい提案など
          • 173 実験的マクロランチャ
            • 174 Re:実験的マクロランチャ
              • 175 Re2:実験的マクロランチャ
                • 176 Re3:実験的マクロランチャ
                  • 177 Re4:実験的マクロランチャ
                    • 178 Re5:実験的マクロランチャ
            • 179 Re: 実験的マクロランチャ
              • 180 Re2: 実験的マクロランチャ
                • 182 Re3: 実験的マクロランチャ
              • 181 Re2: 実験的マクロランチャ
                • 183 Re3: 実験的マクロランチャ
                  • 184 Re4: 実験的マクロランチャ
                    • 185 Windows Script Componentの実験
  • [155] Web辞書をエディタから直接ひく JScriptマクロ りーや 2005年06月20日 13:37

    えっと、何時まで動くか判らない使い捨てに近いマクロですが、MS Bookshelf以上に役に立っています。選択範囲があればその選択文字列で、なければカーソル位置の単語で IE を開いて、上は、英辞郎 on the Webを、下は、goo国語辞典を引きます。ちょっと直せば検索エンジンのいくつかもOKだと思います。

    -----^ otw_eijirou.js ( date:05-06-20 time:13:08 ) ------< cut hear
    // 選択範囲またはカーソル位置の単語で英辞郎on the Web英和・和英
    var objIE = new ActiveXObject("InternetExplorer.Application");
    objIE.Visible = true; // True
    var strWord = Editor.ExpandParameter("$C");
    var naviURL = "http://www2.alc.co.jp/ejr/index.php?word_in=" +
    strWord + "&word_in2=あいうえお&word_in3=PVawEWi72JXCKoa0Je";
    objIE.Navigate( naviURL );
    -----$ otw_eijirou.js ( line:7 charset:sjis) ------------< cut hear

    -----^ otw_goojpdic.js ( date:05-06-20 time:13:08 ) -----< cut hear
    // 選択範囲またはカーソル位置の単語で goo国語辞典
    var objIE = new ActiveXObject("InternetExplorer.Application");
    objIE.Visible = true; // True
    var strWord = Editor.ExpandParameter("$C");
    var naviURL = "http://dictionary.goo.ne.jp/search.php?MT=" +
    strWord + "&kind=jn&mode=0";
    // &kind=ej で英和、&kind=je で和英
    objIE.Navigate( naviURL );
    -----$ otw_goojpdic.js ( line:8 charset:sjis) -----------< cut hear
    • [156] Re:Web辞書をエディタから直接ひく JScriptマクロ maru 2005年06月20日 23:12

      なるほど。シリーズ化出来そうな・・・。

      // jm.js -----------------------------------------------------
      // 選択範囲またはカーソル位置の単語でJM
      var objIE = new ActiveXObject("InternetExplorer.Application");
      objIE.Visible = true; // True
      var strWord = Editor.ExpandParameter("$C");
      var naviURL = "http://search.linux.or.jp/cgi-bin/JM/man.cgi" +
      "?Sec1=on&Sec2=on&Sec3=on&Sec4=on" +
      "&Sec5=on&Sec6=on&Sec7=on&Sec8=on" +
      "&Pagename=" + strWord;
      objIE.Navigate( naviURL );


      // JMnamazu.js ------------------------------------------------
      // 選択範囲またはカーソル位置の単語でJM全文検索
      var objIE = new ActiveXObject("InternetExplorer.Application");
      objIE.Visible = true; // True
      var strWord = Editor.ExpandParameter("$C");
      var naviURL = "http://minori.linux.or.jp/cgi-bin/namazu.cgi" +
      "?key=" + strWord +
      "&whence=0&dbname=JM&max=20&format=long&sort=score";
      objIE.Navigate( naviURL );

      // zipcode.js ------------------------------------------------
      // 選択範囲またはカーソル位置の郵便番号検索
      var objIE = new ActiveXObject("InternetExplorer.Application");
      objIE.Visible = true; // True
      var strWord = Editor.ExpandParameter("$C");
      var naviURL = "http://www.benri.com/zipcode/zipcode.cgi" +
      "?Keyword=" + strWord;
      objIE.Navigate( naviURL );

      // gooMap.js ------------------------------------------------
      // 選択範囲またはカーソル位置の住所を地図検索
      var objIE = new ActiveXObject("InternetExplorer.Application");
      objIE.Visible = true; // True
      var strWord = Editor.ExpandParameter("$C");
      var naviURL = "http://channel.goo.ne.jp/map/search.php?MT=" +
      strWord + "&sw=1";
      objIE.Navigate( naviURL );

      // law.js ------------------------------------------------
      // 選択範囲またはカーソル位置の単語で法令検索
      var objIE = new ActiveXObject("InternetExplorer.Application");
      objIE.Visible = true; // True
      var strWord = Editor.ExpandParameter("$C");
      var naviURL = "http://law.e-gov.go.jp/cgi-bin/idxsearch.cgi" +
      "?H_NAME=" + strWord +
      "&H_NAME_SUBMIT=%8C%9F%8D%F5&H_RYAKU=1&H_YOMI_GUN=1" +
      "&H_CTG_GUN=1&H_NO_GENGO=H&H_NO_YEAR=&H_NO_TYPE=2&H_NO_NO=";
      objIE.Navigate( naviURL );
      • [157] シリーズ化は大歓迎、そこでちょい提案など りーや 2005年06月21日 08:38

        ▼ maruさん
        > なるほど。シリーズ化出来そうな・・・。

        maru さんのも、ほんとに便利です。 法律のとかでしばらく遊んでました。
        Vzの時代からエディタは環境ソフトと思ってる 私は、こういう小物が大好きです。

        なのでシリーズ化は大賛成。
        みなさんがドンドンとアレンジして使って貰って、 気楽に旨く動いた/動かない
        など掲載してくれるとうれしいですね。

        でっ、提案ですが、まあ仮に?これを On The Web シリーズと名付けて
        ファイル名の頭(プレフィックス)に 【 otw_ 】を付けるコトにする。
        マクロ・フォルダの中で集めておきたいし、将来はランチャーマクロで・・・(絵に描いたモチ)

        どうでしょうか?
        • [162] Re:シリーズ化は大歓迎、そこでちょい提案など maru 2005年06月23日 22:30

          ▼ りーやさん

          > ファイル名の頭(プレフィックス)に 【 otw_ 】を付ける
          拝承。

          > 将来はランチャーマクロで・・・
          がんばってくださいね。
          • [167] Re2:シリーズ化は大歓迎、そこでちょい提案など maru 2005年06月26日 01:00

            今回は少しまじめに簡易URLエンコードなど付けてみました。

            'otw_ascii_yougo.vbs ---------------------------------
            'アスキーデジタル用語
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://yougo.ascii24.com/gh/search/" _
            & "?pattern=" & URLEncode(sWord)
            objIE.Navigate( naviURL )

            Private Function URLEncode(sWord)
            For iCnt = 1 To Len(sWord)
            sHex = sHex & Hex(Asc(Mid(sWord, iCnt)))
            Next
            For iCnt = 1To Len(sHex) Step 2
            sUrl = sUrl & "%" & Mid(sHex, iCnt, 2)
            Next
            URLEncode = sUrl
            End Function


            'otw_info_kokugo.vbs ----------------------------------
            'インフォシーク国語辞典
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://jiten.www.infoseek.co.jp/Kokugo" _
            & "?sm=1&pg=result_k.html&col=KO&sv=DC" _
            & "&qt=" & URLEncode(sWord)
            objIE.Navigate( naviURL )

            Private Function URLEncode(sWord)
            For iCnt = 1 To Len(sWord)
            sHex = sHex & Hex(Asc(Mid(sWord, iCnt)))
            Next
            For iCnt = 1To Len(sHex) Step 2
            sUrl = sUrl & "%" & Mid(sHex, iCnt, 2)
            Next
            URLEncode = sUrl
            End Function


            'otw_info_katakana.vbs --------------------------------
            'インフォシークカタカナ
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://jiten.www.infoseek.co.jp/Katakana" _
            & "?pg=result_kn.html&col=KN&sv=DC" _
            & "&qt=" & URLEncode(sWord)
            objIE.Navigate( naviURL )

            Private Function URLEncode(sWord)
            For iCnt = 1 To Len(sWord)
            sHex = sHex & Hex(Asc(Mid(sWord, iCnt)))
            Next
            For iCnt = 1To Len(sHex) Step 2
            sUrl = sUrl & "%" & Mid(sHex, iCnt, 2)
            Next
            URLEncode = sUrl
            End Function
            • [172] Re3:シリーズ化は大歓迎、そこでちょい提案など りーや 2005年06月26日 20:54

              ▼ maruさん
              > 今回は少しまじめに簡易URLエンコードなど付けてみました。

              JScriptのencodeURIメソッドだとユニコードにされちゃうので、思いっきりテ抜きしてた部分ですが、コンパクトな関数で実現されてますねぇ。
              このシリーズは、全部VBSに移行した方が良いですね!
          • [168] Re2:シリーズ化は大歓迎、そこでちょい提案など maru 2005年06月26日 01:01

            'otw_ext.vbs ----------------------------------------
            '拡張子検索
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://www.55555.to/ext/go/ext.cgi" _
            & "?text=" & sWord
            objIE.Navigate( naviURL )


            'otw_msdn.vbs --------------------------------
            'MSDN
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://www.microsoft.com/japan/msdn/shared/components/mscomsearch30.aspx" _
            & "?SearchScope=2&qu=" & URLEncode(sWord)
            objIE.Navigate( naviURL )

            Private Function URLEncode(sWord)
            For iCnt = 1 To Len(sWord)
            sHex = sHex & Hex(Asc(Mid(sWord, iCnt)))
            Next
            For iCnt = 1To Len(sHex) Step 2
            sUrl = sUrl & "%" & Mid(sHex, iCnt, 2)
            Next
            URLEncode = sUrl
            End Function


            'otw_info_WebTrans.vbs --------------------------------
            'インフォシークWeb翻訳
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://honyakuinfoseek.infoseek.co.jp/amiweb/browser.jsp" _
            & "?langpair=1%2C2&url=" & sWord _
            & "&display=2&lang=JA&toolbar=yes&c_id=honyakuinfoseek"
            objIE.Navigate( naviURL )

          • [169] Re2:シリーズ化は大歓迎、そこでちょい提案など maru 2005年06月26日 02:18

            正規表現の部分は、超ヘボヘボです。
            識者の方が修正していただくと良いのですが。

            // otw_whois.js ------------------------------------------------
            // whois検索
            var objIE = new ActiveXObject("InternetExplorer.Application");
            objIE.Visible = true; // True
            var sWord = Editor.ExpandParameter("$C");
            sWord = sWord.replace(/http:\/\//,'');
            sWord = sWord.replace(/https:\/\//,'');
            sWord = sWord.replace(/ftp:\/\//,'');
            sWord = sWord.replace(/\/.*/,'');
            sWord = sWord.match(/[^\.]+\.[^\.]+$/g);

            var naviURL = "http://www.makko.biz/whois/whois.php" +
            "?q=" + sWord[0];
            objIE.Navigate( naviURL );


            // otw_nslookup.js ---------------------------------------------
            // nslookup
            var objIE = new ActiveXObject("InternetExplorer.Application");
            objIE.Visible = true; // True
            var sWord = Editor.ExpandParameter("$C");
            sWord = sWord.replace(/http:\/\//,'');
            sWord = sWord.replace(/https:\/\//,'');
            sWord = sWord.replace(/ftp:\/\//,'');
            sWord = sWord.replace(/\/.*/,'');

            var naviURL = "http://www.makko.biz/nslookup/nslookup.php" +
            "?q=" + sWord;
            objIE.Navigate( naviURL );


            // otw_pci_deviceID.js -------------------------------------
            // PCIデバイスID検索
            var objIE = new ActiveXObject("InternetExplorer.Application");
            objIE.Visible = true; // True
            var sWord = Editor.ExpandParameter("$C");

            var naviURL = "http://www.pcidatabase.com/search.php" +
            "?device_search_str=" + sWord;
            objIE.Navigate( naviURL );


            // otw_pci_deviceID.js -------------------------------------
            // PCIベンダID検索
            var objIE = new ActiveXObject("InternetExplorer.Application");
            objIE.Visible = true; // True
            var sWord = Editor.ExpandParameter("$C");

            var naviURL = "http://www.pcidatabase.com/search.php" +
            "?vendor_search_str=" + sWord;
            objIE.Navigate( naviURL );
          • [170] Re2:シリーズ化は大歓迎、そこでちょい提案など maru 2005年06月26日 02:19

            'otw_2ch.vbs --------------------------------
            '2chスレタイ検索
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://www.domo2.net/search/search.cgi" _
            & "?word=" & URLEncode(sWord)
            objIE.Navigate( naviURL )

            Private Function URLEncode(sWord)
            For iCnt = 1 To Len(sWord)
            sHex = sHex & Hex(Asc(Mid(sWord, iCnt)))
            Next
            For iCnt = 1To Len(sHex) Step 2
            sUrl = sUrl & "%" & Mid(sHex, iCnt, 2)
            Next
            URLEncode = sUrl
            End Function


            'otw_perl_ref.vbs --------------------------------
            'Perlリファレンス
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://www2u.biglobe.ne.jp/~MAS/cgi-bin/perl_ref.cgi" _
            & "?query=" & URLEncode(sWord)
            objIE.Navigate( naviURL )

            Private Function URLEncode(sWord)
            For iCnt = 1 To Len(sWord)
            sHex = sHex & Hex(Asc(Mid(sWord, iCnt)))
            Next
            For iCnt = 1To Len(sHex) Step 2
            sUrl = sUrl & "%" & Mid(sHex, iCnt, 2)
            Next
            URLEncode = sUrl
            End Function
          • [171] Re2:シリーズ化は大歓迎、そこでちょい提案など maru 2005年06月26日 02:35

            'otw_kakaku.vbs --------------------------------
            '価格.com
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://kakaku.com/txtsearch/txtsearch.asp" _
            & "?TopCategoryCD=&SearchWord=" & URLEncode(sWord)
            objIE.Navigate( naviURL )

            Private Function URLEncode(sWord)
            For iCnt = 1 To Len(sWord)
            sHex = sHex & Hex(Asc(Mid(sWord, iCnt)))
            Next
            For iCnt = 1To Len(sHex) Step 2
            sUrl = sUrl & "%" & Mid(sHex, iCnt, 2)
            Next
            URLEncode = sUrl
            End Function

            'otw_music.vbs --------------------------------
            '音楽検索
            sWord = Editor.ExpandParameter("$C")
            Set objIE = CreateObject("InternetExplorer.Application")
            objIE.Visible = true

            naviURL = "http://search.music.yahoo.co.jp/bin/musicsearch" _
            & "?cp=" & URLEncode(sWord) & "&cc=fs"
            objIE.Navigate( naviURL )

            Private Function URLEncode(sWord)
            For iCnt = 1 To Len(sWord)
            sHex = sHex & Hex(Asc(Mid(sWord, iCnt)))
            Next
            For iCnt = 1To Len(sHex) Step 2
            sUrl = sUrl & "%" & Mid(sHex, iCnt, 2)
            Next
            URLEncode = sUrl
            End Function
          • [173] 実験的マクロランチャ りーや 2005年06月26日 20:55


            // otwMacLunch.js
            var macDir = "C:\\MyDocuments\\Sakura\\Macro\\";
            var exeStr = "cscript //Nologo C:\\bin\\sleep300.vbs";
            var WshShell = new ActiveXObject("WScript.Shell");
            // 選択範囲があったら退避
            var wkStr = Editor.GetSelectedString(0); // 作業エリア
            // 編集テキスト上に作業用の空行を作成
            Editor.InsText("\r\n\r\n"); // 改行を二つ貼り付け
            Editor.Left(); // カーソル左移動
            // 入力補完機能のリストボックスでマクロを選択
            Editor.InsText("otw_"); // テキストを貼り付け
            Editor.Complete(); // 入力補完
            while(Editor.ExpandParameter('$x') < 6){
            WshShell.Run(exeStr,0,true);
            }
            Editor.BeginSelect(); // 範囲選択開始
            Editor.GoLineTop(1); // 行頭に移動(折り返し単位)
            var selStr = Editor.GetSelectedString(0); // 選択部分の文字列を取得
            Editor.Delete(); // マクロ選択の文字列を削除
            // 起動マクロ取得部分の後始末
            Editor.Right(); // カーソル右移動
            Editor.DeleteBack(); // バックスペース
            Editor.DeleteBack(); // バックスペース
            if(wkStr.length > 0){ // 選択範囲があったなら
            pos = Editor.ExpandParameter('$x'); // 現在のカラム位置
            Editor.InsText(wkStr); // 退避テキスト貼り付け
            Editor.BeginSelect(); // 選択開始
            while(pos < Editor.ExpandParameter('$x')){
            Editor.Left(); // 貼り付けた分カーソル左
            }
            }
            // 起動マクロのフルパスを編集
            pos = selStr.indexOf(" "); // スペースの位置
            var fn = selStr.substr(0 , pos); // ファイル名取得
            fn = macDir + fn; // フルパスに
            // マクロの読み込みと実行
            var fso, f, mac;
            fso = new ActiveXObject("Scripting.FileSystemObject");
            if(fso.FileExists(fn)){ // マクロが存在するなら
            f = fso.OpenTextFile(fn, 1); // 読み込んで
            mac = f.ReadAll();
            eval(mac); // マクロ実行
            }
            • [174] Re:実験的マクロランチャ りーや 2005年06月26日 20:58

              サクラエディタとWSHだけの力で行おうとしています。

              ただマクロ内では、WScriptオブジェクトのSleepが使えないので、外だしにしました。
              また、選択に入力補完のセレクタを使うので、入力補完ファイルを汚します。

              otwMacLunch.jsマクロの頭の二行はそれぞれの人の環境で変えて下さい。
              macDir は、otwシリーズのマクロを置いてあるディレクトリのパス
              exeStr は、以下のsleep300.vbsの起動コマンドです。置き場所に合わせて、フルパス名を直します。

              一行だけのスリープ・スクリプト、300ms+起動時間マクロを止める
              -----^ sleep300.vbs
              WScript.Sleep(300)
              -----$ sleep300.vbs
              このスクリプトの置き場所

              以下は、タイプ別設定-支援-入力補完機能-単語ファイルに指定する内容です。
              既に入力補完の単語ファイルが指定されているならば、この行をそのファイルの最後にでも加えます。
              -----^ otw_JScript.hkn
              otw_eijirou.js 英辞郎 On the Web英和・和英
              otw_goojpdic.js goo国語辞典
              otw_jm.js Linux JM Project man on WWW
              otw_JMnamazu.js Linux JM Project 全文検索
              otw_zipcode.js 郵便番号検索
              otw_law.js 法令検索
              -----$ otw_JScript.hkn

              さて、JScript のランチャ・マクロで起動出来るのは JScript のマクロだけ。
              どうしまひょ。
              • [175] Re2:実験的マクロランチャ maru 2005年06月26日 22:28

                ▼ りーやさん
                > さて、JScript のランチャ・マクロで起動出来るのは JScript のマクロだけ。

                こちらも困ったことが…。
                Symantecのセキュリティソフトが常駐していると
                Sleepの処理のたびに、ウイルス警告が出ます。
                FileSystemObjectも多分やばいです。

                vbsで書いたものはエンコード処理をとっぱらって
                js版で書き換えればどうにかなりそうですが。
                • [176] Re3:実験的マクロランチャ りーや 2005年06月27日 08:21

                  ▼ maruさん
                  > こちらも困ったことが…。
                  > Symantecのセキュリティソフトが常駐していると
                  > Sleepの処理のたびに、ウイルス警告が出ます。

                  マカフィだと、ひとつのサクラエディタの編集ファイル(プロセス?)毎に警告は一度だけで、今回は許可とすると後は御構い無しですが、起動されるのが WSH だからでしょうか?

                  vector に sleep.exe があったので、これを使って
                  http://www.vector.co.jp/soft/win95/util/se282254.html

                  var exeStr = "sleep 1";
                  とかしてみると、どうでしょう?ダメっぽいかな?
                  起動を、Editor.ExecCommandにすると、電源落とすしかなくなっちゃうので、それは実験しない方が良いですよ。(泣)


                  > FileSystemObjectも多分やばいです。

                  こっちもキビシイですね。マクロの中でファイルも読めないとなると、外部プログラムにマクロ選択と読み込みをまかせて、クリップボードで渡して貰うくらいしかアイデアが無いです。サクラエディタとマクロだけでは無理ということで、やはり特注プログラムが必要になるのかな?


                  > vbsで書いたものはエンコード処理をとっぱらって
                  > js版で書き換えればどうにかなりそうですが。
                  いや、ランチャを vbs にした方が良いと思うんですが、Execute ステートメントで動くのは確認しましたので、問題はやはり上の2点か?

                  ' test.vbs ---------------
                  Dim mac, path
                  path = "C:\\MyDocuments\\Sakura\\Macro\\otw_ascii_yougo.vbs"
                  Set fso = CreateObject("Scripting.FileSystemObject")
                  Set f = fso.OpenTextFile(path , 1)
                  mac = f.ReadAll()
                  Execute mac
                  • [177] Re4:実験的マクロランチャ りーや 2005年06月27日 10:42

                    ▼ りーやさん
                    > > FileSystemObjectも多分やばいです。
                    > こっちもキビシイですね。マクロの中でファイルも読めない

                    gis_dur さん方式があった!!
                    こっちならマクロの言語を問わないから利点もあるか。。。
                    KeySend で実現しているgis_dur さんの 0executeMacro.js は、Symantecに叱られずに動くでしょうか?

                    後は、スリープか、マクロで使えない WScript オブジェクトのSleepメソッドの代わりがあれば良い訳で、それを提供している汎用COMコンポーネントを拾ってくればOKかな?
                    AutoItXの旧バージョンなら、サイズも小さいからアリかな?
                    http://www.autoitscript.com/AutoIt/downloads.php (~78KB)
                    • [178] Re5:実験的マクロランチャ maru 2005年06月28日 01:50

                      ▼ りーやさん
                      > var exeStr = "sleep 1";
                      sleep.exeはたぶんNGです。

                      テスト用にウエイトの身代わりとして
                      var exeStr = "ping localhost";
                      としましたがSymantecに叱られました。

                      Symantecユーザはあきらめるという選択肢も。
            • [179] Re: 実験的マクロランチャ げんた 2005年06月28日 08:49

              話の腰を折るようで申し訳ないですが,これって本体にポップアップメニュー表示コマンドを用意すれば解決する話ですか?
              • [180] Re2: 実験的マクロランチャ りーや 2005年06月28日 22:12

                ▼ げんたさん
                > 話の腰を折るようで申し訳ないですが,これって本体にポップアップメニュー表示コマンドを用意すれば解決する話ですか?

                ありがとうございます。
                本質的には、50しかないマクロ登録の枠をつぶさないでというコトから始まっています。
                便利なカスタムメニューが使い切れてない状態ですから、マクロ登録可能数を増やしていただければ、こんな足掻きはしなかったかもしれません。

                一方で、長期的には、マクロ機能が、ここで議論されて強化されて欲しいと願っています。
                現在のマクロ関数は、マクロ内での利用が充分に吟味されていずに、本体機能の基準で移植されているという印象を受けています。
                今回のケースの入力補完やウインドウ関係やカスタムメニュー関係更には、ファイル操作関係と数々のマクロ関数が用意れいてますが、ユーザ入力や機能の終了を待たないのでマクロの最後でしか使えないものが大半です。
                かたや、今回キー送信でメニュー選択してやってしまおうとしている、キーマクロの読み込み(機能番号:31252)とキーマクロの実行(同:31253)は、マクロ関数にありません。

                ユーザーとの対話を支援する機能として、メッセージボックスやインプットボックスは基本的に欲しいですし、欲を言えば入力補完の素敵なリストボックスやファイルオープンなどのコモンダイアログ類もというのは欲張りすぎかな?
                クリップボードの読み書きも欲しいし、挿入/上書きや折り返す/折り返さないや入力改行コードなどは、マクロで設定を変えられるのですが、ExpandParameter などで現在の状態が取得出来ません。

                WSHは強力ですが、maruさんの書き込みのようにセキュリティ製品から制限を受けます。セキュリティ・ホールとはならないように便利機能を本体ベースで実現できると良いですね。
                • [182] Re3: 実験的マクロランチャ maru 2005年06月29日 00:33

                  ▼ りーやさん
                  > 本質的には、50しかないマクロ登録の枠をつぶさないでというコトから始まっています。

                  やや便乗しますが「ツール」→「キーマクロの読み込み」
                  と同じ機能を、コマンドラインから
                  sakura.exe -mac="test.js" -nowin
                  →(マクロの読み込みのみを行う)
                  のような実装が、いつの日か実現されることを願いつつ。

                  さらに加えて
                  sakura.exe -mac="test.js" -macexec
                  →(マクロの読み込みを行い、実行する)
                  とかができると、日常的に定型の変換処理を行うための
                  ツールとして最高っす。Perlがインストールできる
                  環境であれば、ありがたみは少ないかもしれませんが。

                  > マクロ機能が、ここで議論されて強化されて欲しい
                  マクロで実現可能な範囲が広がれば、結果的に
                  本体開発者の方々の負担減につながるかもしれません。
                  私のようにマクロなら書けそうな、なんちゃって開発者は
                  おそらく大勢いると思います。
              • [181] Re2: 実験的マクロランチャ りーや 2005年06月28日 23:44

                ▼ げんたさん
                > 本体にポップアップメニュー表示コマンドを用意すれば解決する話ですか?

                ああっ、ちゃんとお答えしていなかった。
                完全には解決出来ないと思います。
                これで、マクロ名が選択出来れば、後は読み込みと実行ですが、WSHでファイルを読み込んでも、それを避けてキー送信で ALT+T→Aとマクロファイル名とALT+T→Dで本体側に行わせようとしても、セキュリティ製品にブロックされます。

                マカフィでは、sakura.exe のプロセス毎にひとつのマクロは一回許可すれば良いのですが、ノートンはマクロ実行の都度に止められるみたいです。

                maruさん、以下のテストマクロでどうでしょうか?
                // KeySendTest.js
                var WshShell = new ActiveXObject("WScript.Shell");
                WshShell.SendKeys("%(TA)");

                さらに、キー送信は WScript.Sleep で間隔を空けながら行うのが普通ですが、HTML Applications (HTA)同様にWScriptオブジェクトは使えないのはご承知の通りです。

                キーマクロの読み込みと実行もマクロ関数に用意していただいて解決ということになると思います。
                • [183] Re3: 実験的マクロランチャ maru 2005年06月29日 01:22

                  ▼ りーやさん
                  > マカフィでは、…一回許可すれば良いのですが
                  ノートンでも「スクリプト全体を1回許可」という選択が
                  ありますが、ここで許可される適用範囲が
                  いまいちよくわからず、微妙な挙動です。


                  > // KeySendTest.js
                  > var WshShell = new ActiveXObject("WScript.Shell");
                  > WshShell.SendKeys("%(TA)");
                  警告でます…。
                  「スクリプトを1回許可」ではファイルダイアログがでます。
                  この場合、ある意味期待の動作です。
                  「スクリプト全体を1回許可」では、一応それ以降は
                  警告は出ませんがファイルダイアログも出なくなります。


                  たとえば呼び出される子マクロをWSCファイルとして
                  ひとつにまとめるというのは?
                  子マクロをWSCに埋め込むユーティリティ(外部プログラム)
                  を用意して事前にマクロ登録を行うような。
                  WSCを呼び出す親マクロと抱き合わせでリリース。

                  もっとも、ポップアップメニューが利用できたり
                  あるいはキーコード取得などもできれば
                  複数のマクロをひとつに統合すればよいわけで
                  50個あるマクロ枠にもずいぶん余裕ができると思われ。
                  • [184] Re4: 実験的マクロランチャ りーや 2005年06月29日 18:49

                    ▼ maruさん
                    > 「スクリプト全体を1回許可」では、一応それ以降は
                    > 警告は出ませんがファイルダイアログも出なくなります。

                    天下のノートン、気難しいものですね。

                    > たとえば呼び出される子マクロをWSCファイルとして
                    > ひとつにまとめるというのは?

                    ちょっと、試してみました。実験の結果
                    メリット:他のスクリプト言語からでも使える
                         レジスタに登録しなくても使えるので、気楽なライブラリィ利用が可能
                    デメリット:Editor.のマクロ関数を持たせるのはたぶん無理
                    やはり?:マクロ内からの利用では、自身と同様に WScript オブジェクトは不可

                    使いどころがなかなか難しそうです。


                    > 複数のマクロをひとつに統合すればよいわけで
                    > 50個あるマクロ枠にもずいぶん余裕ができると思われ。

                    こっちの発想でしょうね。
                    汎用マクロランチャとかこだわらなければ、On The Web シリーズを1マクロで行けますね。
                    これは、ひとつの問題解決ですね。
                    • [185] Windows Script Componentの実験 りーや 2005年06月29日 19:02

                      折角なので何かの参考に、レジストリに登録しないで動かせましたが、ウチでは止まっていたサービス(COM+ System Application)を動かす必要がありました。

                      -----^ sakuraTest.wsc -----< cut hear
                      <?xml version="1.0"?>
                      <component>
                      <?component error="true" debug="true"?>
                      <registration
                      description="sakuraTest"
                      progid="sakuraTest.WSC"
                      version="1.00"
                      classid="{a24c7f52-9433-428e-8986-b09d950d4f70}"
                      >
                      </registration>
                      <public>
                      <property name="Titl">
                      <put/>
                      </property>
                      <method name="Popup2sec">
                      <PARAMETER name="strMsg"/>
                      </method>
                      </public>
                      <implements type="Behavior" id="Behavior"/>
                      <script language="JScript">
                      <![CDATA[
                      var description = new sakuraTest;
                      function sakuraTest()
                      {
                      this.put_Titl = put_Titl;
                      this.Popup2sec = Popup2sec;
                      }
                      var Titl = "Sakura Popup";
                      function put_Titl(newValue)
                      {
                      Titl = newValue;
                      }
                      function Popup2sec(strMsg)
                      {
                      var WshShell = new ActiveXObject("WScript.Shell");
                      var rtnCode = WshShell.Popup(strMsg, 2, Titl, 0);
                      return rtnCode;
                      }
                      ]]>
                      </script>
                      </component>
                      -----$ sakuraTest.wsc -----< cut hear

                      ここから使う側
                      // test1.js
                      var sTest = GetObject("script:C:\\WSC\\sakuraTest.WSC");
                      sTest.Titl = "タイトル"; // property
                      sTest.Popup2sec("2秒表示"); // method

                      ' test2.vbs
                      Set sTest = GetObject("script:C:\\WSC\\sakuraTest.WSC")
                      sTest.Titl = "タイトル" ' property
                      sTest.Popup2sec("2秒表示") ' method

                      # test3.pls
                      use Win32::OLE;
                      my $sTest=Win32::OLE->GetObject("script:C:\\WSC\\sakuraTest.WSC");
                      $sTest->{"Titl"} = "タイトル"; # property
                      $sTest->Popup2sec("2秒表示"); # method

                      エクスプローラから動かしたときと、マクロで動かしたときで、2秒で閉じるか閉じないかの違いがあります。