//差分ツールのパス、バックスラッシュのエスケープに注意 var diffToolPath = "C:\\Program Files\\WinMerge\\WinMergeU.exe"; var diffToolName = "WinMerge"; if (editor.Documents.Count < 2) { status = "比較対象がありません"; Quit(); } status = document.Name + " と比較するファイルを選択。"; var menu = CreatePopupMenu(); var docs = editor.Documents; var q = "\""; var qsq = q + " " + q; for(var i = 1 ; i <= docs.Count; ++i ){ var doc = docs.Item(i); if (doc.FullName == document.FullName) continue; var label; label = q + doc.Name + q + " と " + document.Name + " を " + diffToolName + " で差分を取る" if (! doc.Saved) { label = "* " + label; } menu.Add(label, i); } var result = menu.Track(1); if (result > 0) { var doc = docs.Item(result);//選ばれた比較対照のドキュメント if (!doc.Saved) doc.Save(doc.FullName);//差分をとる前にセーブします if (!document.Saved) document.Save(document.FullName);//差分をとる前にセーブします //実行するコマンド var cmd = q + diffToolPath + qsq + document.FullName + qsq + doc.FullName + q; status = cmd; var ws = new ActiveXObject("WScript.Shell"); ws.Run(cmd); }