//按下快捷键时被调用的方法 public void CallBack() { Common.GlobalOCR(); }
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(); } }