//-------------------------------------------------------------------------------------- public TSForm() { m_NavBar.Form = this; InitializeComponent(); this.Text = AE_RemapExceed.Properties.Resources.AppName; tsGrid1.TSForm = this; this.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.m_MouseWheel); tsGrid1.GetStatus(); SetFrameDisp(tsGrid1.tsd.FrameDisp); SetLayout(); toolStripStatusLabel1.Text = tsGrid1.SelInfo; ShortCutPre(); if (PrefLoad() == false) { this.Left = 100; this.Top = 100; } BackLoad(); string[] cmds; cmds = System.Environment.GetCommandLineArgs(); GetCommand(cmds); IpcServerChannel servChannel = new IpcServerChannel("processtrancetest"); ChannelServices.RegisterChannel(servChannel, true); // イベントを登録 m_msg = new AE_RemoteInfo(); m_msg.OnTrance += new AE_RemoteInfo.CallEventHandler(m_msg_OnTrance); RemotingServices.Marshal(m_msg, "message", typeof(AE_RemoteInfo)); NavBarSetup(); this.Invalidate(); }
// static void Main(string[] args) { EXEC_MODE mode = EXEC_MODE.NONE; string filename = ""; //最初に起動しているか調べる bool IsExecAE = (Process.GetProcessesByName("AE_RemapExceed").Length > 0); if (args.Length > 0) { for (int i = 0; i < args.Length; i++) { char c = args[i][0]; if ((c == '-') || (c == '/')) { string s = args[i].Substring(1).ToUpper(); switch (s) { case "EXENOW": if (mode == EXEC_MODE.NONE) { mode = EXEC_MODE.EXENOW; } break; case "CALL": if (mode == EXEC_MODE.NONE) { mode = EXEC_MODE.CALL; } break; case "ACTIVE": if (mode == EXEC_MODE.NONE) { mode = EXEC_MODE.ACTIVE; } break; case "EXPORT": if (mode == EXEC_MODE.NONE) { mode = EXEC_MODE.EXPORT; } break; case "EXPORT_LAYER": if (mode == EXEC_MODE.NONE) { mode = EXEC_MODE.EXPORT_LAYER; } break; case "IMPORT_LAYER": if (mode == EXEC_MODE.NONE) { mode = EXEC_MODE.IMPORT_LAYER; } break; default: if (mode == EXEC_MODE.NONE) { mode = EXEC_MODE.HELP; } break; } } else { if (filename == "") { if (File.Exists(args[i]) == true) { filename = args[i]; } } } } } //何も引数がないのなら終わる if (mode == EXEC_MODE.NONE) { return; } if (mode == EXEC_MODE.HELP) { return; } else if (mode == EXEC_MODE.EXENOW) { Console.Write(String.Format("{0}", IsExecAE).ToLower()); return; } else if (mode == EXEC_MODE.CALL) { if (IsExecAE == false) { string p = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "AE_RemapExceed.exe"); if (File.Exists(p) == false) { Console.Write("errer no AE_RemapExceed.exe"); return; } else { Process.Start(p); } } return; } else { if (IsExecAE == false) { Console.Write("errer AE_remap execute"); return; } //プロセスで制御 AE_RemoteInfo m_msg = null; IpcClientChannel clientChannel = new IpcClientChannel(); ChannelServices.RegisterChannel(clientChannel, true); m_msg = (AE_RemoteInfo)Activator.GetObject(typeof(AE_RemoteInfo), "ipc://processtrancetest/message"); if ((mode == EXEC_MODE.EXPORT) || (mode == EXEC_MODE.EXPORT_LAYER)) { //予め書き出すファイルがあったら消しておく filename = System.IO.Path.GetTempPath(); filename = Path.Combine(filename, "ae_remap_temp.json"); if (File.Exists(filename) == true) { File.Delete(filename); } } else if (mode == EXEC_MODE.IMPORT_LAYER) { //読み込むファイルがなければエラー if (File.Exists(filename) == false) { Console.Write("errer none import file"); return; } } //オプションを選ぶ switch (mode) { case EXEC_MODE.ACTIVE: m_msg.DataTrance((int)mode, filename); break; case EXEC_MODE.EXPORT: m_msg.DataTrance((int)mode, filename); break; case EXEC_MODE.EXPORT_LAYER: m_msg.DataTrance((int)mode, filename); break; case EXEC_MODE.IMPORT_LAYER: m_msg.DataTrance((int)mode, filename); break; } //エキスポート時はファイル作成されるまで待つ if ((mode == EXEC_MODE.EXPORT) || (mode == EXEC_MODE.EXPORT_LAYER)) { int idx = 0; do { SleepAsync(); idx++; if (idx > 500) { Console.Write("errer export"); return; } } while (File.Exists(filename) == false); //成功したら Console.Write(ToJSP(filename)); } return; } }