「ウィンドウの位置とサイズを拡張子で指定」の版間の差分
ナビゲーションに移動
検索に移動
ハイライト効果の適用 |
余分な空白の除去 |
||
| 14行目: | 14行目: | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
#title = "ウインドウの位置とサイズを拡張子別に指定" | |||
(function(){ | |||
if(Editor.EnableTab && Editor.Documents.Count>1) { | |||
// タブ表示モードで起動済みなら位置・サイズは変更しないほうがよい。 | |||
Quit(); | |||
// 強制的に SDI モードにするなら非推奨の ExecuteCommandByID を使う | |||
// var MEID_WINDOW_COMBINE = 2190; | |||
// Editor.ExecuteCommandByID(MEID_WINDOW_COMBINE); | |||
} | |||
try { | |||
var FindWindow = new ActiveXObject("SfcMini.DynaCall"); | |||
var SetWindowPos = new ActiveXObject("SfcMini.DynaCall"); | |||
FindWindow.Declare("user32", "FindWindowA"); | |||
SetWindowPos.Declare("user32","SetWindowPos") ; | |||
}catch(e){ | |||
Status = "SFC miniが無いため、APIアクセスができません"; | |||
Quit(); | |||
} | |||
var filename = Editor.ActiveDocument.FullName; | |||
var editmark = (Editor.ActiveDocument.Saved)?"":" *"; | |||
var arr = filename.split("."); | |||
var ext = (arr.length)?arr[arr.length - 1]:""; | |||
switch (ext.toLowerCase()){ | |||
/* 拡張子別の設定をここに書く */ | |||
case "txt": | |||
var pos={"left":200,"top":200,"width":800,"height":600}; | |||
break; | |||
//case "js","vbs":/* vbsとごっちゃになってた */ | |||
case "js": | |||
case "vb": | |||
var pos={"left":100,"top":100,"width":1200,"height":600}; | |||
break; | |||
default: | |||
var pos={"left":100,"top":100,"width":800,"height":600}; | |||
} | |||
try{ | |||
var hWndDoc = FindWindow(0, filename + editmark + " - Mery"); | |||
SetWindowPos(hWndDoc, 0, pos["left"], pos["top"], pos["width"], pos["height"], 64); | |||
} catch(e) { | |||
Status = "API実行エラー"; | |||
} | |||
})(); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
2023年5月16日 (火) 18:47時点における版
https://www.haijin-boys.com/discussions/2460 で Nakajima さんが要望していた「起動オプションでウィンドウの表示位置を指定」 のマクロによる実装です。表示位置はマクロファイルにハードコーディングするので、 厳密には要望どおりではありません。
(下のマクロを SetWindowPos.js として保存した場合) mery.exe "%1" /mf "マクロのパス\SetWindowPos.js" と /mfオプション を開くファイル名の後ろにつけることが重要。
ウィンドウの操作に Win32 APIを使うので SFC mini が必須です。 Vista 以降の OS をお使いの方は Vector で公開されている正式版 Ver 1.0.1 で はなく sourceforge にある 1.0.5 βをインストールしてください。 http://sourceforge.jp/projects/sfcmini/
#title = "ウインドウの位置とサイズを拡張子別に指定"
(function(){
if(Editor.EnableTab && Editor.Documents.Count>1) {
// タブ表示モードで起動済みなら位置・サイズは変更しないほうがよい。
Quit();
// 強制的に SDI モードにするなら非推奨の ExecuteCommandByID を使う
// var MEID_WINDOW_COMBINE = 2190;
// Editor.ExecuteCommandByID(MEID_WINDOW_COMBINE);
}
try {
var FindWindow = new ActiveXObject("SfcMini.DynaCall");
var SetWindowPos = new ActiveXObject("SfcMini.DynaCall");
FindWindow.Declare("user32", "FindWindowA");
SetWindowPos.Declare("user32","SetWindowPos") ;
}catch(e){
Status = "SFC miniが無いため、APIアクセスができません";
Quit();
}
var filename = Editor.ActiveDocument.FullName;
var editmark = (Editor.ActiveDocument.Saved)?"":" *";
var arr = filename.split(".");
var ext = (arr.length)?arr[arr.length - 1]:"";
switch (ext.toLowerCase()){
/* 拡張子別の設定をここに書く */
case "txt":
var pos={"left":200,"top":200,"width":800,"height":600};
break;
//case "js","vbs":/* vbsとごっちゃになってた */
case "js":
case "vb":
var pos={"left":100,"top":100,"width":1200,"height":600};
break;
default:
var pos={"left":100,"top":100,"width":800,"height":600};
}
try{
var hWndDoc = FindWindow(0, filename + editmark + " - Mery");
SetWindowPos(hWndDoc, 0, pos["left"], pos["top"], pos["width"], pos["height"], 64);
} catch(e) {
Status = "API実行エラー";
}
})();
スポンサーリンク