Esempio n. 1
0
        /// <summary>
        /// 触发进入下一步的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Next_Click(object sender, RoutedEventArgs e)
        {
            GuidePages.PageChangeRoutedEventArgs args = e as GuidePages.PageChangeRoutedEventArgs;

            if (args.XamlPath == "1")
            {
                if (GuideMode == 1)
                {
                    //Hook方式设置 完成
                    Common.transMode = 1;
                    TranslateWindow translateWindow = new TranslateWindow();
                    translateWindow.Show();

                    this.Close();
                }
                else if (GuideMode == 2)
                {
                    //OCR方式设置 完成
                    Common.transMode = 2;
                    TranslateWindow translateWindow = new TranslateWindow();
                    translateWindow.Show();

                    this.Close();
                }
                else
                {
                }
            }
            else
            {
                //其他情况就跳转指定页面
                GuidePageFrame.Navigate(new Uri(args.XamlPath, UriKind.Relative));
                GuideStepBar.Next();
            }
        }
Esempio n. 2
0
        private void StartTranslateByGid(int gid)
        {
            var ps      = Process.GetProcesses();
            var pidList = new List <Process>();

            foreach (var process in ps)
            {
                string filepath;
                try {
                    filepath = process.MainModule.FileName;
                }
                catch (Exception) {
                    continue;
                    //这个地方直接跳过,是因为32位程序确实会读到64位的系统进程,而系统进程是不能被访问的
                    //throw ex;
                }

                if (gameInfoList[gid].FilePath == filepath)
                {
                    pidList.Add(process);
                }
            }

            if (pidList.Count == 0)
            {
                HandyControl.Controls.MessageBox.Show(Application.Current.Resources["MainWindow_StartError_Hint"].ToString(), Application.Current.Resources["MessageBox_Hint"].ToString());
                return;
            }
            else
            {
                var pid = pidList[0].Id;
                pidList.Clear();
                pidList = ProcessHelper.FindSameNameProcess(pid);
            }

            Common.GameID          = gameInfoList[gid].GameID;
            Common.transMode       = 1;
            Common.UsingDstLang    = gameInfoList[gid].DstLang;
            Common.UsingSrcLang    = gameInfoList[gid].SrcLang;
            Common.UsingRepairFunc = gameInfoList[gid].RepairFunc;

            switch (Common.UsingRepairFunc)
            {
            case "RepairFun_RemoveSingleWordRepeat":
                Common.repairSettings.SingleWordRepeatTimes = gameInfoList[gid].RepairParamA;
                break;

            case "RepairFun_RemoveSentenceRepeat":
                Common.repairSettings.SentenceRepeatFindCharNum = gameInfoList[gid].RepairParamA;
                break;

            case "RepairFun_RegexReplace":
                Common.repairSettings.Regex         = gameInfoList[gid].RepairParamA;
                Common.repairSettings.Regex_Replace = gameInfoList[gid].RepairParamB;
                break;

            default:
                break;
            }

            Common.RepairFuncInit();

            Common.textHooker = pidList.Count == 1 ? new TextHookHandle(pidList[0].Id) : new TextHookHandle(pidList);

            Common.textHooker.Init(!gameInfoList[gid].Isx64);
            Common.textHooker.HookCodeList.Add(gameInfoList[gid].Hookcode);
            Common.textHooker.HookCode_Custom = gameInfoList[gid].HookCodeCustom;

            if (gameInfoList[gid].IsMultiHook)
            {
                var ggw = new GameGuideWindow(3);
                ggw.Show();
            }
            else
            {
                //无重复码。直接进游戏
                Common.textHooker.MisakaCodeList = null;
                //2020-06-08 大部分情况无重复码的游戏不会hook到很多,不进行去多余hook
                //Common.textHooker.DetachUnrelatedHookWhenDataRecv = Convert.ToBoolean(Common.appSettings.AutoDetach);
                Common.textHooker.StartHook(Convert.ToBoolean(Common.appSettings.AutoHook));
                var task1 = Task.Run(async delegate
                {
                    await Task.Delay(3000);
                    Common.textHooker.Auto_AddHookToGame();
                });

                var tw = new TranslateWindow();
                tw.Show();
            }
        }
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            TranslateWindow translateWindow = new TranslateWindow();

            translateWindow.Show();
        }
        private void StartTranslateBygid(int gid)
        {
            Process[]      ps     = Process.GetProcesses();
            List <Process> pidlst = new List <Process>();

            for (int i = 0; i < ps.Length; i++)
            {
                string filepath = "";
                try
                {
                    filepath = ps[i].MainModule.FileName;
                }
                catch (Exception)
                {
                    continue;
                    //这个地方直接跳过,是因为32位程序确实会读到64位的系统进程,而系统进程是不能被访问的
                    //throw ex;
                }


                if (gameInfolst[gid].FilePath == filepath)
                {
                    pidlst.Add(ps[i]);
                }
            }

            if (pidlst.Count == 0)
            {
                HandyControl.Controls.MessageBox.Show("未找到游戏进程!", "提示");
                return;
            }
            else
            {
                int pid = pidlst[0].Id;
                pidlst.Clear();
                pidlst = ProcessHelper.FindSameNameProcess(pid);
            }

            Common.transMode       = 1;
            Common.UsingDstLang    = gameInfolst[gid].Dst_Lang;
            Common.UsingSrcLang    = gameInfolst[gid].Src_Lang;
            Common.UsingRepairFunc = gameInfolst[gid].Repair_func;

            switch (Common.UsingRepairFunc)
            {
            case "RepairFun_RemoveSingleWordRepeat":
                Common.repairSettings.SingleWordRepeatTimes = gameInfolst[gid].Repair_param_a;
                break;

            case "RepairFun_RemoveSentenceRepeat":
                Common.repairSettings.SentenceRepeatFindCharNum = gameInfolst[gid].Repair_param_a;
                break;

            case "RepairFun_RegexReplace":
                Common.repairSettings.Regex         = gameInfolst[gid].Repair_param_a;
                Common.repairSettings.Regex_Replace = gameInfolst[gid].Repair_param_b;
                break;

            default:
                break;
            }

            Common.RepairFuncInit();

            if (pidlst.Count == 1)
            {
                Common.textHooker = new TextHookHandle(pidlst[0].Id);
            }
            else
            {
                Common.textHooker = new TextHookHandle(pidlst);
            }


            Common.textHooker.Init(!gameInfolst[gid].Isx64);
            Common.textHooker.HookCodeList.Add(gameInfolst[gid].Hookcode);

            if (gameInfolst[gid].IsMultiHook == true)
            {
                GameGuideWindow ggw = new GameGuideWindow(3);
                ggw.Show();
            }
            else
            {
                //无重复码。直接进游戏
                Common.textHooker.MisakaCodeList = null;
                Common.textHooker.DetachUnrelatedHookWhenDataRecv = Convert.ToBoolean(Common.appSettings.AutoDetach);
                Common.textHooker.StartHook(Convert.ToBoolean(Common.appSettings.AutoHook));

                TranslateWindow tw = new TranslateWindow();
                tw.Show();
            }
        }