/// <summary> /// XML形式で記述されたファイルを読み込み、データを抽出する /// </summary> /// <param name="strXmlName">読み込むXMLの名前</param> /// <param name="strElementName">1階層目の要素名</param> /// <param name="strNodeName">strElementNameに属する2階層目の要素名</param> /// <returns>抽出したデータ</returns> public static string ReadConfig(this XDocument xdoc, string strElementName, string strNodeName) { string strXmlPath = String.Empty; try { // 読み込んだXML形式の文書から目的の情報を抽出する strXmlPath = xdoc.Root.Elements() .Where(elements => elements.Name == strElementName) .Select(nodes => nodes.Descendants(strNodeName) .Select(node => node.Value) .First()) .First(); } catch (Exception ex) { MyErrorHandling.showErrorMessage(ex.Message + "\r\n\r\nXML:" + xdoc + "\r\nElement:" + strElementName + "\r\nNode:" + strNodeName); } return(strXmlPath); }
/// <summary> /// 外部アプリケーションを起動するためのプロセスを作成し、コマンドライン引数を渡した状態で起動する /// (アプリケーションのディレクトリを指定して起動) /// </summary> /// <param name="strAppName">アプリケーション名</param> /// <param name="strAppDir">アプリケーションの格納されているディレクトリ</param> /// <param name="strAppArg">コマンドライン引数</param> /// <returns>外部アプリケーションの標準出力</returns> public static Process ProcessStart(ExternalAppSettings setting) { // プロセスのオブジェクトを作成 Process process = new Process(); try { // 外部アプリケーションをプロセスのオブジェクトに関連付ける process.StartInfo.FileName = setting.AppRoot; // プロセスに渡す引数を設定 process.StartInfo.Arguments = setting.ArgumentString; // 標準出力を受け取る設定 process.StartInfo.RedirectStandardOutput = true; // 実行時にシェルを使うかの設定(ウインドウを隠すときはfalseにしなければならない) process.StartInfo.UseShellExecute = false; // ウインドウを隠すかどうかの設定 process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; // 外部アプリケーションの画面を非表示(GUIがない場合) process.StartInfo.CreateNoWindow = true; // 起動失敗時にエラーダイアログを表示 process.StartInfo.ErrorDialog = true; //// 標準出力を取得するイベントハンドラ process.OutputDataReceived += MainForm.form.process_OutputDataReceived; process.Start(); process.BeginOutputReadLine(); } catch (Exception ex) { MyErrorHandling.showErrorMessage(ex.Message, ex); } return(process); }