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

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
ハイライト効果の適用
MSY-07 (トーク | 投稿記録)
SyntaxHighlightにcopyの追加
 
(同じ利用者による、間の5版が非表示)
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オプション を開くファイル名の後ろにつけることが重要。


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


<syntaxhighlight lang="javascript">
== 注意事項 ==
#title = "ウインドウの位置とサイズを拡張子別に指定"
ウィンドウの操作に Win32 APIを使うので [https://www.vector.co.jp/soft/winnt/prog/se387565.html SFC mini] が必須です。
(function(){
 
  if(Editor.EnableTab && Editor.Documents.Count>1) {
== ソースコード ==
    // タブ表示モードで起動済みなら位置・サイズは変更しないほうがよい。
<syntaxhighlight lang="javascript" copy>
    Quit();
#title = "ウインドウの位置とサイズを拡張子別に指定"
    // 強制的に SDI モードにするなら非推奨の ExecuteCommandByID を使う
(function(){
    // var MEID_WINDOW_COMBINE = 2190;
if(Editor.EnableTab && Editor.Documents.Count>1) {
    // Editor.ExecuteCommandByID(MEID_WINDOW_COMBINE);
  // タブ表示モードで起動済みなら位置・サイズは変更しないほうがよい。
  }
  Quit();
  try {
  // 強制的に SDI モードにするなら非推奨の ExecuteCommandByID を使う
    var FindWindow = new ActiveXObject("SfcMini.DynaCall");
  // var MEID_WINDOW_COMBINE = 2190;
    var SetWindowPos = new ActiveXObject("SfcMini.DynaCall");
  // Editor.ExecuteCommandByID(MEID_WINDOW_COMBINE);
    FindWindow.Declare("user32", "FindWindowA");
}
    SetWindowPos.Declare("user32","SetWindowPos") ;
try {
  }catch(e){
  var FindWindow = new ActiveXObject("SfcMini.DynaCall");
    Status = "SFC miniが無いため、APIアクセスができません";
  var SetWindowPos = new ActiveXObject("SfcMini.DynaCall");
    Quit();
  FindWindow.Declare("user32", "FindWindowA");
  }
  SetWindowPos.Declare("user32","SetWindowPos") ;
  var filename = Editor.ActiveDocument.FullName;
}catch(e){
  var editmark = (Editor.ActiveDocument.Saved)?"":" *";
  Status = "SFC miniが無いため、APIアクセスができません";
  var arr = filename.split(".");
  Quit();
  var ext = (arr.length)?arr[arr.length - 1]:"";
}
  switch (ext.toLowerCase()){
var filename = Editor.ActiveDocument.FullName;
    /* 拡張子別の設定をここに書く */
var editmark = (Editor.ActiveDocument.Saved)?"":" *";
    case "txt":
var arr = filename.split(".");
      var pos={"left":200,"top":200,"width":800,"height":600};
var ext = (arr.length)?arr[arr.length - 1]:"";
      break;
switch (ext.toLowerCase()){
    //case "js","vbs":/* vbsとごっちゃになってた */
  /* 拡張子別の設定をここに書く */
    case "js":
  case "txt":
    case "vb":
    var pos={"left":200,"top":200,"width":800,"height":600};
      var pos={"left":100,"top":100,"width":1200,"height":600};
    break;
      break;
  //case "js","vbs":/* vbsとごっちゃになってた */
    default:
  case "js":
      var pos={"left":100,"top":100,"width":800,"height":600};
  case "vb":
  }
    var pos={"left":100,"top":100,"width":1200,"height":600};
  try{
    break;
    var hWndDoc = FindWindow(0, filename + editmark + " - Mery");
  default:
    SetWindowPos(hWndDoc, 0, pos["left"], pos["top"], pos["width"], pos["height"], 64);
    var pos={"left":100,"top":100,"width":800,"height":600};
  } catch(e) {
}
    Status = "API実行エラー";
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>

2025年6月30日 (月) 00:21時点における最新版

【要望】起動オプションでウィンドウの表示位置を指定でNakajimaさんが要望していた「起動オプションでウィンドウの表示位置を指定」のマクロによる実装です。

表示位置はマクロファイルにハードコーディングするので、厳密には要望どおりではありません。

(下のマクロを SetWindowPos.js として保存した場合)mery.exe "%1" /mf "マクロのパス\SetWindowPos.js"と /mfオプション を開くファイル名の後ろにつけることが重要。

注意事項[編集]

ウィンドウの操作に Win32 APIを使うので SFC mini が必須です。

ソースコード[編集]

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