IMG タグ作成マクロ

説明

このマクロは、IMG タグを作成するマクロです。このマクロの実行には、SeraphyScriptTools をインストールする必要があります。

マクロを実行するとコモンダイアログが立ち上がり、選んだファイルへの相対パスを書き込みます。

また、つばめを使い、画像ファイルの高さと幅を取得し、これを書き出す機能も付いてます。つばめを使う方は、書式の最初に半角スペースを入れてください。

なお、XHTML で書いている方は、var linktag の最後に半角スペースとスラッシュを入れ、つばめの貼り付けの前の左に1つ移動を3つ移動にするといい感じだと思います。

一応きちんと動いてますが、文法的におかしい所などがありましたら、指摘していただけるとありがたいです。

マクロ

// つばめを使うかどうか
// 使うなら1、使わないなら0
var swallow = 1;
//つばめのフルパス。¥を二重化して書く
var swallowpass = "D:\\app\\swallow\\swallow.exe";
//
// ==========設定おしまい===========

var Instance = new ActiveXObject( "SeraphyScriptTools.CommDialog");
CurrentPath = document.FullName;

function GetRelativePath(path1,path2){//path1に対するpath2の相対パスを求める
  path1 = path1.split("\\");
  path2 = path2.split("\\");
  while ((1 < path1.length) && (1 < path2.length) && (path1[0]==path2[0])){
    path1 = path1.slice(1,path1.length);
    path2 = path2.slice(1,path2.length);
  }
  var pat = "";
  for (var i=0;i==path1.length-1;i++) pat += "./";//同じ階層なら./を付ける
  for (var i=0;i<path1.length-1;i++) pat += "../";//上の階層なら../を付ける
  return(pat + path2.join("/"));
}

//コモンダイアログ
var path2 = Instance.OpenFileDialog (CurrentPath , "画像ファイル(*.jpg,*.png,*.gif)|*.jpg;*.png;*.gif|すべてのファイル|*.*");

if(path2 != null){//キャンセルした時用にifで。

  WshShell = new ActiveXObject( "WScript.Shell" );
  if (swallow ==1){
    WshShell.Run( swallowpass + " " + path2 ,1 ,true );
  }

  var pathloot = document.Path;//開いてるファイルのディレクトリパス取得
  var path1 = pathloot + "\\";//ケツに\を足す

  var relpath = GetRelativePath(path1,path2);
  var linktag = "<img src=\"" + relpath + "\">";
  write(linktag);//imgタグ貼り付け

  if (swallow == 1){
    with (document){
      selection.CharLeft(false,1);//左に1つ移動
      selection.Paste(eeCopyUnicode);//つばめを貼り付け
      selection.CharLeft(false,1);//左に1つ移動
    }
  }
}