「よく使うフォルダ」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
手石 (トーク | 投稿記録)
編集の要約なし
手石 (トーク | 投稿記録)
編集の要約なし
1行目: 1行目:
myfolders.js
quickaccess.js
 


1.動作
1.動作
・ポップアップメニューにあらかじめ登録したフォルダの一覧を表示し、エクスプローラーで開く。
・ポップアップメニューにあらかじめ登録したフォルダの一覧を表示し、エクスプローラーで開く。
2.使い方
2.使い方
 
・マクロを実行すると“My Macros”フォルダに“quickaccess.txt”が作成されます。
・マクロを実行すると”My Macros”フォルダに”myfolders.txt”が作成されます。
 この場所とファイル名は、“file_path”と“file_name”で指定しています。
 
・“quickaccess.txt”に、フォルダパスとポップアップメニューに表示する内容とを“>>”で区切り、1件1行で書いてください。
 この場所とファイル名は、”file_path”と”file_name”で指定しています。
・フォルダパスは絶対パスで、“\”で終わっている必要があります。
 
・”myfolders.txt”に、フォルダパスとポップアップメニューに表示する内容とを”>>”で区切り、1件1行で書いてください。
 
・フォルダパスは絶対パスで、”\”で終わっている必要があります。
 
・ポップアップメニューに表示する内容の部分がないときは、フォルダパスを表示します。
・ポップアップメニューに表示する内容の部分がないときは、フォルダパスを表示します。
 
・単純な判断をしているので、複数の“>>”があると最後の部分のみが表示されます。つまり、例1と例2は同じ表示になります。
・単純な判断をしているので、複数の”>>”があると最後の部分のみが表示されます。つまり、例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
<pre>
// myfolders.js
// 20121121
// 20121121


var file_Name = "myfolders.txt"
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”(作成しない)。
// 第3引数:ファイルが存在しなかった場合に“true”なら作成する。省略した場合は、“false”(作成しない)。
// 第4引数:開くファイルの形式。
// 第4引数:開くファイルの形式。
var TRISTATE_TRUE      = -1;  // Unicode
var TRISTATE_TRUE      = -1;  // Unicode
51行目: 36行目:


// 一行ずつ読み込んで配列に。
// 一行ずつ読み込んで配列に。
// 空のファイルに”objFile.Readall()”はエラー。
// 空のファイルに“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”。
// “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;
</pre>

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;

スポンサーリンク