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

提供: MeryWiki
ナビゲーションに移動 検索に移動
編集の要約なし
MSY-07 (トーク | 投稿記録)
ハイライト効果の適用
1行目: 1行目:
https://www.haijin-boys.com/discussions/2460
https://www.haijin-boys.com/discussions/2460
で Nakajima さんが要望していた「起動オプションでウィンドウの表示位置を指定」
で Nakajima さんが要望していた「起動オプションでウィンドウの表示位置を指定」
14行目: 13行目:
http://sourceforge.jp/projects/sfcmini/
http://sourceforge.jp/projects/sfcmini/


 
<syntaxhighlight lang="javascript">
  #tile="ウインドウの位置とサイズを拡張子別に指定"
  #title = "ウインドウの位置とサイズを拡張子別に指定"
  (function(){
  (function(){
   if(Editor.EnableTab && Editor.Documents.Count>1) {
   if(Editor.EnableTab && Editor.Documents.Count>1) {
57行目: 56行目:
   }
   }
  })();
  })();
</syntaxhighlight>

2023年5月16日 (火) 18:45時点における版

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