예제 #1
0
        /// <summary>
        /// 寻找任何正在运行中的之前已保存过的游戏
        /// </summary>
        /// <returns>数组索引(非GameID),-1代表未找到</returns>
        private int GetGameListHasProcessGame_PID_ID()
        {
            var processes = Process.GetProcesses();
            var ret       = new List <int>();

            gameInfoList = GameLibraryHelper.GetAllGameLibrary();
            if (gameInfoList != null)
            {
                foreach (var process in processes)
                {
                    for (int j = 0; j < gameInfoList.Count; j++)
                    {
                        string filepath;
                        try {
                            filepath = process.MainModule.FileName;
                        }
                        catch (Win32Exception ex) {
                            continue;
                        }

                        if (filepath == gameInfoList[j].FilePath)
                        {
                            return(j);
                        }
                    }
                }

                return(-1);
            }
            return(-1);
        }
        /// <summary>
        /// 寻找任何正在运行中的之前已保存过的游戏
        /// </summary>
        /// <returns>数组索引(非GameID),-1代表未找到</returns>
        private int GetGameListHasProcessGame_PID_ID()
        {
            var ret = new List <int>();

            gameInfoList = GameLibraryHelper.GetAllGameLibrary();
            if (gameInfoList == null)
            {
                return(-1);
            }

            foreach (var process in Process.GetProcesses())
            {
                for (int j = 0; j < gameInfoList.Count; j++)
                {
                    try
                    {
                        if (process.MainModule.FileName == gameInfoList[j].FilePath)
                        {
                            return(j);
                        }
                    }
                    catch (Win32Exception)
                    {
                        continue;
                    }
                    catch (InvalidOperationException)
                    {
                        continue;
                    }
                }
                process.Dispose();
            }

            return(-1);
        }
예제 #3
0
        /// <summary>
        /// 寻找任何正在运行中的之前已保存过的游戏
        /// </summary>
        /// <returns>游戏gid,-1代表未找到</returns>
        private int GetGameListHasProcessGame_PID_ID()
        {
            Process[]  ps  = Process.GetProcesses();
            List <int> ret = new List <int>();

            gameInfolst = GameLibraryHelper.GetAllGameLibrary();
            if (gameInfolst != null)
            {
                for (int i = 0; i < ps.Length; i++)
                {
                    for (int j = 0; j < gameInfolst.Count; j++)
                    {
                        string filepath = "";
                        try
                        {
                            filepath = ps[i].MainModule.FileName;
                        }
                        catch (Win32Exception ex)
                        {
                            continue;
                        }

                        if (filepath == gameInfolst[j].FilePath)
                        {
                            return(j);
                        }
                    }
                }
                return(-1);
            }
            return(-1);
        }
예제 #4
0
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     if (nameBox.Text != "")
     {
         GameLibraryHelper.UpdateGameNameByID(gameInfolst[gid].GameID, nameBox.Text);
         HandyControl.Controls.MessageBox.Show("已修改,重启后生效!", "提示");
     }
 }
예제 #5
0
 private void Initialize(IAppSettings settings)
 {
     this.Resources["Foreground"] = (SolidColorBrush)(new BrushConverter().ConvertFrom(settings.ForegroundHex));
     gameInfoList          = GameLibraryHelper.GetAllGameLibrary();
     Common.repairSettings = new ConfigurationBuilder <IRepeatRepairSettings>().UseIniFile(Environment.CurrentDirectory + "\\settings\\RepairSettings.ini").Build();
     GameLibraryPanel_Init();
     //先初始化这两个语言,用于全局OCR识别
     Common.UsingDstLang = "zh";
     Common.UsingSrcLang = "jp";
 }
예제 #6
0
 /// <summary>
 /// 删除游戏按钮事件
 /// </summary>
 private void DeleteGameBtn_Click(object sender, RoutedEventArgs e)
 {
     if (HandyControl.Controls.MessageBox.Show(Application.Current.Resources["MainWindow_Drawer_DeleteGameConfirmBox"].ToString(), Application.Current.Resources["MessageBox_Ask"].ToString(), MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
     {
         GameLibraryHelper.DeleteGameByID(gameInfoList[gid].GameID);
         var b = GameLibraryPanel.FindName($"game{gid}") as Border;
         GameLibraryPanel.Children.Remove(b);
         GameInfoDrawer.IsOpen = false;
     }
 }
 private void NameConfirmBtn_Click(object sender, RoutedEventArgs e)
 {
     if (nameBox.Text != "")
     {
         GameLibraryHelper.UpdateGameNameByID(gameInfolst[gid].GameID, nameBox.Text);
         nameBox.Visibility        = Visibility.Hidden;
         nameConfirmBtn.Visibility = Visibility.Hidden;
         HandyControl.Controls.MessageBox.Show("已修改,重启后生效!", "提示");
     }
 }
 /// <summary>
 /// 删除游戏按钮事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void DeleteGameBtn_Click(object sender, RoutedEventArgs e)
 {
     if (HandyControl.Controls.MessageBox.Show("您是否确认要将此游戏从您的游戏库中移除?\r\n这个操作不会删除您的游戏文件,但下次进行这个游戏时需要重新设置相关参数。", "确认删除", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
     {
         GameLibraryHelper.DeleteGameByID(gameInfolst[gid].GameID);
         Border b = GameLibraryPanel.FindName("game" + gid) as Border;
         GameLibraryPanel.Children.Remove(b);
         GameInfoDrawer.IsOpen = false;
     }
 }
예제 #9
0
        private void InitializeAppearance()
        {
            gameInfolst           = GameLibraryHelper.GetAllGameLibrary();
            Common.appSettings    = new ConfigurationBuilder <IAppSettings>().UseIniFile(Environment.CurrentDirectory + "\\settings\\settings.ini").Build();
            Common.repairSettings = new ConfigurationBuilder <IRepeatRepairSettings>().UseIniFile(Environment.CurrentDirectory + "\\settings\\RepairSettings.ini").Build();
            GameLibraryPanel_Init();

            ISettings settings = new ConfigurationBuilder <ISettings>().UseJsonFile("settings/settings.json").Build();

            this.Resources["Foreground"] = (SolidColorBrush)(new BrushConverter().ConvertFrom(settings.ForegroundHex));
        }
        private void ConfirmButton_Click(object sender, RoutedEventArgs e)
        {
            if (GamePid != -1)
            {
                if (SameNameGameProcessList.Count == 1)
                {
                    Common.textHooker = new TextHookHandle(lstProcess[(string)GameProcessCombox.SelectedValue]);
                }
                else
                {
                    Common.textHooker = new TextHookHandle(SameNameGameProcessList);
                }

                if (!Common.textHooker.Init(!(bool)x64GameCheckBox.IsChecked))
                {
                    HandyControl.Controls.MessageBox.Show(Application.Current.Resources["MainWindow_TextractorError_Hint"].ToString());
                    return;
                }

                Common.GameID = -1;
                string filepath = ProcessHelper.FindProcessPath(GamePid);
                if (filepath != "")
                {
                    Common.GameID = GameLibraryHelper.GetGameID(filepath);
                }
                SQLHelper sqliteH = new SQLHelper();
                sqliteH.ExecuteSql(
                    $"UPDATE game_library SET isx64 = '{x64GameCheckBox.IsChecked}' WHERE gameid = {Common.GameID};");


                //使用路由事件机制通知窗口来完成下一步操作
                PageChangeRoutedEventArgs args = new PageChangeRoutedEventArgs(PageChange.PageChangeRoutedEvent, this);
                args.XamlPath = "GuidePages/Hook/ChooseHookFuncPage.xaml";
                this.RaiseEvent(args);
            }
            else
            {
                HandyControl.Controls.Growl.Error(Application.Current.Resources["ChooseGamePage_NextErrorHint"].ToString());
            }
        }
        private void ConfirmButton_Click(object sender, RoutedEventArgs e)
        {
            if (GamePid != -1)
            {
                if (SameNameGameProcessList.Count == 1)
                {
                    Common.textHooker = new TextHookHandle(lstProcess[(string)GameProcessCombox.SelectedValue]);
                }
                else
                {
                    Common.textHooker = new TextHookHandle(SameNameGameProcessList);
                }

                Common.textHooker.Init(!(bool)x64GameCheckBox.IsChecked);


                Common.GameID = -1;
                string filepath = Common.FindProcessPath(GamePid);
                if (filepath != "")
                {
                    Common.GameID = GameLibraryHelper.GetGameID(filepath);
                }
                SQLHelper sqliteH = new SQLHelper();
                sqliteH.ExecuteSql(string.Format("UPDATE game_library SET isx64 = '{0}' WHERE gameid = {1};", x64GameCheckBox.IsChecked, Common.GameID));


                //使用路由事件机制通知窗口来完成下一步操作
                PageChangeRoutedEventArgs args = new PageChangeRoutedEventArgs(PageChange.PageChangeRoutedEvent, this);
                args.XamlPath = "GuidePages/Hook/ChooseHookFuncPage.xaml";
                this.RaiseEvent(args);
            }
            else
            {
                HandyControl.Controls.Growl.Error("请先选择一个进程再进行下一步操作!");
            }
        }