「ウィンドウの位置とサイズを拡張子で指定」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
余分な空白の除去
MSY-07 (トーク | 投稿記録)
セクションの追加、改行の修正
1行目: 1行目:
https://www.haijin-boys.com/discussions/2460
https://www.haijin-boys.com/discussions/2460 で Nakajima さんが要望していた「起動オプションでウィンドウの表示位置を指定」のマクロによる実装です。
で Nakajima さんが要望していた「起動オプションでウィンドウの表示位置を指定」
のマクロによる実装です。表示位置はマクロファイルにハードコーディングするので、
厳密には要望どおりではありません。


(下のマクロを SetWindowPos.js として保存した場合)
表示位置はマクロファイルにハードコーディングするので、厳密には要望どおりではありません。
mery.exe "%1" /mf "マクロのパス\SetWindowPos.js"
と /mfオプション を開くファイル名の後ろにつけることが重要。


(下のマクロを SetWindowPos.js として保存した場合)mery.exe "%1" /mf "マクロのパス\SetWindowPos.js"と /mfオプション を開くファイル名の後ろにつけることが重要。
== 注意事項 ==
ウィンドウの操作に Win32 APIを使うので SFC mini が必須です。
ウィンドウの操作に Win32 APIを使うので SFC mini が必須です。
Vista 以降の OS をお使いの方は Vector で公開されている正式版 Ver 1.0.1
 
はなく sourceforge にある 1.0.5 βをインストールしてください。
Vista 以降の OS をお使いの方は Vector で公開されている正式版 Ver 1.0.1 ではなく、sourceforge にある 1.0.5 βをインストールしてください。
 
http://sourceforge.jp/projects/sfcmini/
http://sourceforge.jp/projects/sfcmini/


== ソースコード ==
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
#title = "ウインドウの位置とサイズを拡張子別に指定"
#title = "ウインドウの位置とサイズを拡張子別に指定"

2023年5月18日 (木) 01:13時点における版

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実行エラー";
 }
})();
スポンサーリンク