「よく使うフォルダ」の版間の差分
編集の要約なし |
編集の要約なし |
||
| 1行目: | 1行目: | ||
quickaccess.js | |||
1.動作 | 1.動作 | ||
・ポップアップメニューにあらかじめ登録したフォルダの一覧を表示し、エクスプローラーで開く。 | ・ポップアップメニューにあらかじめ登録したフォルダの一覧を表示し、エクスプローラーで開く。 | ||
2.使い方 | 2.使い方 | ||
・マクロを実行すると“My Macros”フォルダに“quickaccess.txt”が作成されます。 | |||
この場所とファイル名は、“file_path”と“file_name”で指定しています。 | |||
・“quickaccess.txt”に、フォルダパスとポップアップメニューに表示する内容とを“>>”で区切り、1件1行で書いてください。 | |||
・フォルダパスは絶対パスで、“\”で終わっている必要があります。 | |||
・ポップアップメニューに表示する内容の部分がないときは、フォルダパスを表示します。 | ・ポップアップメニューに表示する内容の部分がないときは、フォルダパスを表示します。 | ||
・単純な判断をしているので、複数の“>>”があると最後の部分のみが表示されます。つまり、例1と例2は同じ表示になります。 | |||
(例1)C:\Program Files (x86)\Mery\>>Meryのフォルダ | (例1)C:\Program Files (x86)\Mery\>>Meryのフォルダ | ||
(例2)C:\Program Files (x86)\Mery\>>ほげ>>ほげ>>Meryのフォルダ | (例2)C:\Program Files (x86)\Mery\>>ほげ>>ほげ>>Meryのフォルダ | ||
3.その他 | 3.その他 | ||
・Mery 2.0.11.3997、Windows7 x64 Home sp1 で作成しました。 | ・Mery 2.0.11.3997、Windows7 x64 Home sp1 で作成しました。 | ||
// quickaccess.js | |||
// | |||
// 20121121 | // 20121121 | ||
var file_Name = " | var file_Name = "quickaccess.txt" | ||
var file_FullName = getPath(Editor.FullName) + "My Macros\\" + file_Name; | var file_FullName = getPath(Editor.FullName) + "My Macros\\" + file_Name; | ||
var WshShell = new ActiveXObject("WScript.Shell"); | var WshShell = new ActiveXObject("WScript.Shell"); | ||
| 43行目: | 28行目: | ||
var FORWRITING = 2; // 書き込み専用 | var FORWRITING = 2; // 書き込み専用 | ||
var FORAPPENDING = 8; // 追加書き込み | var FORAPPENDING = 8; // 追加書き込み | ||
// | // 第3引数:ファイルが存在しなかった場合に“true”なら作成する。省略した場合は、“false”(作成しない)。 | ||
// 第4引数:開くファイルの形式。 | // 第4引数:開くファイルの形式。 | ||
var TRISTATE_TRUE = -1; // Unicode | var TRISTATE_TRUE = -1; // Unicode | ||
| 51行目: | 36行目: | ||
// 一行ずつ読み込んで配列に。 | // 一行ずつ読み込んで配列に。 | ||
// | // 空のファイルに“objFile.Readall()”はエラー。 | ||
var folderAry = []; | var folderAry = []; | ||
while (!objFile.AtEndOfStream){ | while (!objFile.AtEndOfStream){ | ||
| 65行目: | 50行目: | ||
var submenu = CreatePopupMenu(); | var submenu = CreatePopupMenu(); | ||
for (var i in folderAry){ | for (var i in folderAry){ | ||
// | // “>>”でフォルダパスと表示名に分離。 | ||
var item = folderAry[i].split(">>"); | var item = folderAry[i].split(">>"); | ||
item_0 = item[0]; | item_0 = item[0]; | ||
| 111行目: | 96行目: | ||
} | } | ||
// | // “filename”をエディタで開いていれば“true”。 | ||
function isOpened(filename){ | function isOpened(filename){ | ||
var result = false; | var result = false; | ||
| 127行目: | 112行目: | ||
if (arguments.length < 2){slashend = true} | if (arguments.length < 2){slashend = true} | ||
var ary = file_FullPath.split("\\"); | var ary = file_FullPath.split("\\"); | ||
// | // 最後の“\”以降の要素を除去する。 | ||
ary.splice(ary.length-1, 1); | ary.splice(ary.length-1, 1); | ||
return (slashend)? ary.join("\\")+"\\": ary.join("\\"); | return (slashend)? ary.join("\\")+"\\": ary.join("\\"); | ||
| 135行目: | 120行目: | ||
objFso = null; | objFso = null; | ||
WshShell = null; | WshShell = null; | ||
2012年11月27日 (火) 08:52時点における版
quickaccess.js
1.動作 ・ポップアップメニューにあらかじめ登録したフォルダの一覧を表示し、エクスプローラーで開く。 2.使い方 ・マクロを実行すると“My Macros”フォルダに“quickaccess.txt”が作成されます。 この場所とファイル名は、“file_path”と“file_name”で指定しています。 ・“quickaccess.txt”に、フォルダパスとポップアップメニューに表示する内容とを“>>”で区切り、1件1行で書いてください。 ・フォルダパスは絶対パスで、“\”で終わっている必要があります。 ・ポップアップメニューに表示する内容の部分がないときは、フォルダパスを表示します。 ・単純な判断をしているので、複数の“>>”があると最後の部分のみが表示されます。つまり、例1と例2は同じ表示になります。 (例1)C:\Program Files (x86)\Mery\>>Meryのフォルダ (例2)C:\Program Files (x86)\Mery\>>ほげ>>ほげ>>Meryのフォルダ
3.その他 ・Mery 2.0.11.3997、Windows7 x64 Home sp1 で作成しました。 // quickaccess.js // 20121121
var file_Name = "quickaccess.txt" var file_FullName = getPath(Editor.FullName) + "My Macros\\" + file_Name; var WshShell = new ActiveXObject("WScript.Shell"); var objFso = new ActiveXObject("Scripting.FileSystemObject");
// ファイルを読み取り専用で開く。 // 第2引数:オープンモード。 var FORREADING = 1; // 読み取り専用 var FORWRITING = 2; // 書き込み専用 var FORAPPENDING = 8; // 追加書き込み // 第3引数:ファイルが存在しなかった場合に“true”なら作成する。省略した場合は、“false”(作成しない)。 // 第4引数:開くファイルの形式。 var TRISTATE_TRUE = -1; // Unicode var TRISTATE_FALSE = 0; // ASCII var TRISTATE_USEDEFAULT = -2; // システムデフォルト var objFile = objFso.OpenTextFile(file_FullName, FORREADING, true, TRISTATE_FALSE );
// 一行ずつ読み込んで配列に。 // 空のファイルに“objFile.Readall()”はエラー。 var folderAry = []; while (!objFile.AtEndOfStream){
folderAry.push(objFile.ReadLine());
}
// 読み終わったファイルを閉じる。 objFile.Close();
var offset = 10; // 固定メニュー数の上限。 var reg = new RegExp("^[a-zA-Z]:\\\\(.*\\\\)*$"); // フォルダを表す正規表現のつもり。 var menu = CreatePopupMenu(); var submenu = CreatePopupMenu(); for (var i in folderAry){ // “>>”でフォルダパスと表示名に分離。 var item = folderAry[i].split(">>"); item_0 = item[0]; item_1 = ((item.length <= 1)||item[item.length-1] == "" )? item[0]: item[item.length-1]; if (reg.test(item_0)){ menu.Add(item_1, +i + offset, 0); } } menu.Add("-------", 0, meMenuSeparator) menu.Add("このドキュメントのフォルダ", 1, 0) menu.Add("ユーザーフォルダ", 2, 0) menu.Add("-------", 0, meMenuSeparator) menu.AddPopup("設定", submenu); submenu.Add("フォルダの追加", 3, 0); submenu.Add(file_Name + "を開く", 4, 0); var r = menu.Track(mePosMouse);
switch(r){ case 0: break; case 1: WshShell.Run('explorer "' + Document.path + '"'); break; case 2: var folder_user = WshShell.SpecialFolders("Desktop").replace("Desktop","") WshShell.Run('explorer "' + folder_user + '"'); break; case 3: path = (document.path == "")? getPath(Editor.FullName): document.path; var input = prompt("フォルダパス(>>表示名)を入力してください。", path + ">>" ) if (input != ""){ var objFile = objFso.OpenTextFile(file_FullName, FORAPPENDING, true, TRISTATE_FALSE ); objFile.WriteLine(input); objFile.close(); } break; case 4: if (!isOpened(file_Name)){ Editor.NewFile(); Editor.Documents.Item(editor.Documents.Count-1).Activate(); } Editor.OpenFile(file_FullName); break; default : if (r >= offset){WshShell.Run('explorer "' + folderAry[r-offset].split(">")[0] + '"');} }
// “filename”をエディタで開いていれば“true”。 function isOpened(filename){ var result = false; for (var i = Editor.Documents.Count-1; i>=0; i--){ result = (result || Editor.Documents.Item(i).Name == filename); } return result; }
// ファイルのパス部分を返す。 function getPath(file_FullPath, slashend){ // 念のためにファイルパス+ファイル名の形式になっているかを正規表現で確認する? // var reg = new RegExp("^[a-zA-Z]:\\\\(.*\\\\)*[^\\\\]+$"); // if (!reg.test(file_FullPath)){return "pattern error!"} if (arguments.length < 2){slashend = true} var ary = file_FullPath.split("\\"); // 最後の“\”以降の要素を除去する。 ary.splice(ary.length-1, 1); return (slashend)? ary.join("\\")+"\\": ary.join("\\"); }
objFile = null; objFso = null; WshShell = null;