void ComponentDispatcher_ThreadFilterMessage(ref MSG msg, ref bool handled) { if (msg.message == message && msg.wParam != handle) { uint resultmessage = (uint)msg.lParam; if (resultmessage != lastmessage) { lastmessage = resultmessage; if (LoadComplete) { if (resultmessage <= 20000) { //파일 연결 StreamReader sr = new StreamReader(tempfolder + @"\openPath"); Global.WindowTool.OpenedFilePath = sr.ReadLine().Trim(); sr.Close(); } MainWindow main = new MainWindow(); main.Show(); } else { MsgDialog errorDialog = new MsgDialog("프로그램이 로딩 중에는 창을 열 수 없습니다.", MessageBoxButton.OK, MessageBoxImage.Error); errorDialog.ShowDialog(); } } } }
private void Window_Loaded(object sender, RoutedEventArgs e) { if (!System.IO.Directory.Exists(tempfolder)) { System.IO.Directory.CreateDirectory(tempfolder); } Process[] procs = Process.GetProcessesByName("usemapeditor"); // 두번 이상 실행되었을 때 처리할 내용을 작성합니다. if (procs.Length > 1) { //MessageBox.Show("프로그램이 이미 실행되고 있습니다.\n다시 한번 확인해주시기 바랍니다."); uint rv = 0; Random rd = new Random(); if (Global.WindowTool.OpenedFilePath != null) { //파일 연결하기 rv = (uint)rd.Next(0, 10000); StreamWriter sw = new StreamWriter(tempfolder + @"\openPath"); sw.Write(Global.WindowTool.OpenedFilePath); sw.Close(); } else { //일반으로 열기 rv = (uint)rd.Next(30000, 40000); } PostMessage((IntPtr)HWND_BROADCAST, message, (uint)handle, rv); Close(); return; } Global.Setting.LoadSetting(); Global.WindowTool.scdata = new SCData(); Global.WindowTool.iscript = new Iscript(AppDomain.CurrentDomain.BaseDirectory + @"\Data\iscript.bin", false); Global.WindowTool.iscriptX = new Iscript(AppDomain.CurrentDomain.BaseDirectory + @"\Data\iscriptx.bin", true); Global.WindowTool.stat_txt = new tblreader(AppDomain.CurrentDomain.BaseDirectory + @"\Data\tbls\stat_txt.tbl"); Global.WindowTool.stat_txt_kor_eng = new tblreader(AppDomain.CurrentDomain.BaseDirectory + @"\Data\tbls\stat_txt_kor_eng.tbl"); Global.WindowTool.stat_txt_kor_kor = new tblreader(AppDomain.CurrentDomain.BaseDirectory + @"\Data\tbls\stat_txt_kor_kor.tbl"); Global.WindowTool.programStart = this; PaletteHelper paletteHelper = new PaletteHelper(); ITheme theme = paletteHelper.GetTheme(); if (Global.Setting.Vals[Global.Setting.Settings.Program_IsDark] == "true") { theme.SetBaseTheme(Theme.Dark); } else { theme.SetBaseTheme(Theme.Light); } paletteHelper.SetTheme(theme); this.WindowState = WindowState.Normal; int W = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width; //모니터 스크린 가로크기 int H = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height; //모니터 스크린 세로크기 this.Left = (W - this.Width) / 2; this.Top = (H - this.Height) / 2; BackgroundWorker backgroundWorker = new BackgroundWorker(); backgroundWorker.DoWork += delegate(object _sender, DoWorkEventArgs _e) { System.Threading.Thread.Sleep(500); }; backgroundWorker.RunWorkerCompleted += delegate(object _sender, RunWorkerCompletedEventArgs _e) { if (!File.Exists(Global.Setting.Vals[Global.Setting.Settings.Program_StarCraftPath])) { //스타크래프트 파일이 존재하지 않을 경우 MsgDialog msg = new MsgDialog("StarCraft 실행파일을 지정하겠습니까?\n지정하지 않으면 그래픽을 로드 하지 않습니다.", MessageBoxButton.YesNo, MessageBoxImage.Information); msg.ShowDialog(); if (msg.msgresult == MessageBoxResult.No) { LoadCmp(); return; } else { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "스타크래프트 실행파일|StarCraft Launcher.exe"; if ((bool)openFileDialog.ShowDialog()) { Global.Setting.Vals[Global.Setting.Settings.Program_StarCraftPath] = openFileDialog.FileName; } else { //다이어로그 취소함 LoadCmp(); return; } } } if (Global.Setting.Vals[Global.Setting.Settings.Program_GRPLoad] == "false") { //GRP전처리 과정을 수행하지 않음. this.Visibility = Visibility.Collapsed; MsgDialog msg = new MsgDialog("그래픽 전처리 과정을 수행하겠습니까?\n이 작업은 몇분 정도 걸릴 수 있습니다.\n지정하지 않으면 그래픽을 로드 하지 않습니다.", MessageBoxButton.YesNo, MessageBoxImage.Information); msg.ShowDialog(); this.Visibility = Visibility.Visible; if (msg.msgresult == MessageBoxResult.No) { LoadCmp(); return; } else { this.Visibility = Visibility.Collapsed; Preprocessing preprocessing = new Preprocessing(); preprocessing.ShowDialog(); this.Visibility = Visibility.Visible; if (!preprocessing.IsClose) { LoadCmp(); return; } else { Global.Setting.Vals[Global.Setting.Settings.Program_GRPLoad] = "true"; } } } //GrpTestLoad.Children.Clear(); LoadCmp(); }; backgroundWorker.RunWorkerAsync(); }