コード例 #1
0
ファイル: MainForm.cs プロジェクト: OMGhhh/OpenCirnix
        private void BTN_LaunchWC3_Click(object sender, EventArgs e)
        {
            string LastInstallPath = Settings.InstallPath;

            if (!File.Exists(Path.Combine(LastInstallPath, "Warcraft III.exe")) &&
                !File.Exists(Path.Combine(LastInstallPath, "war3.exe")))
            {
                OpenFileDialog FDialog = new OpenFileDialog
                {
                    Title  = "워크래프트 실행 파일을 선택하세요.",
                    Filter = "워크래프트 EXE파일|Warcraft III.exe;war3.exe"
                };
                if (FDialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                Settings.InstallPath = LastInstallPath = Path.GetDirectoryName(FDialog.FileName);
                string MixPath = $"{LastInstallPath}\\Cirnix";
                if (!File.Exists(MixPath + ".mix"))
                {
                    File.WriteAllBytes(MixPath + ".mix", Global.Properties.Resources.Cirnix);
                    NativeMethods.WritePrivateProfileString("Cirnix", "Mana Bar", "0", MixPath + ".ini");
                    NativeMethods.WritePrivateProfileString("Cirnix", "Show AS & MS in Number", "1", MixPath + ".ini");
                }
            }
            Process[] proc = Process.GetProcessesByName(TargetProcess);
            if (proc.Length > 0)
            {
                if (MetroDialog.YesNo("기존 프로세스 감지 됨", "Warcraft III 프로세스가 아직 실행 중입니다.\n종료하고 실행하시겠습니까?"))
                {
                    foreach (var item in proc)
                    {
                        try
                        {
                            item.Kill();
                        }
                        catch
                        {
                            proc = Process.GetProcessesByName(TargetProcess);
                            if (proc.Length > 0)
                            {
                                MetroDialog.OK("액세스 오류", "Warcraft III 프로세스를 종료할 수 없었습니다.\n작업 관리자에서 수동으로 프로세스를 종료하세요.");
                                return;
                            }
                        }
                    }
                }
                else
                {
                    return;
                }
            }
            bool isDebug = false;

            if (File.Exists(Path.Combine(ResourcePath, "JNService", "DEBUG.txt")))
            {
                isDebug = true;
            }
            CLRHook.Injector.Init(LastInstallPath, MetroDialog.Select("화면 표기 설정", "창 모드", "전체 창", "전체화면"), true, isDebug);
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: ttn218/OpenCirnix
        private async void BTN_LaunchWC3_Click(object sender, EventArgs e)
        {
            string LastInstallPath = Settings.InstallPath;

            if (!File.Exists(Path.Combine(LastInstallPath, "JNLoader.exe")))
            {
                OpenFileDialog FDialog = new OpenFileDialog
                {
                    Title  = "실행 파일을 선택하세요.",
                    Filter = "워크래프트 EXE파일|JNLoader.exe;Warcraft III.exe;war3.exe"
                };
                if (FDialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                Settings.InstallPath = LastInstallPath = Path.GetDirectoryName(FDialog.FileName);
                string MixPath = $"{LastInstallPath}\\Cirnix";
                if (!File.Exists(MixPath + ".mix"))
                {
                    File.WriteAllBytes(MixPath + ".mix", Global.Properties.Resources.Cirnix);
                    NativeMethods.WritePrivateProfileString("Cirnix", "Mana Bar", "0", MixPath + ".ini");
                    NativeMethods.WritePrivateProfileString("Cirnix", "Show AS & MS in Number", "1", MixPath + ".ini");
                }
            }
            if (Memory.Component.Warcraft3Info.Process != null)
            {
                if (MetroDialog.YesNo("기존 프로세스 감지 됨", "Warcraft III 프로세스가 아직 실행 중입니다.\n종료하고 실행하시겠습니까?"))
                {
                    if (!Memory.Component.Warcraft3Info.Close())
                    {
                        MetroDialog.OK("액세스 오류", "Warcraft III 프로세스를 종료할 수 없었습니다.\n작업 관리자에서 수동으로 프로세스를 종료하세요.");
                        return;
                    }
                }
                else
                {
                    return;
                }
            }
            GameModule.StartWarcraft3(LastInstallPath, MetroDialog.Select("화면 표기 설정", "창 모드", "전체 창", "전체화면"));
        }