1313using Hi3Helper . SentryHelper ;
1414using Hi3Helper . Win32 . Native . ManagedTools ;
1515using Hi3Helper ;
16+ using Microsoft . Extensions . Logging ;
1617using Microsoft . UI . Xaml ;
1718using System ;
18- using System . Diagnostics ;
1919using System . IO ;
2020using System . Diagnostics . CodeAnalysis ;
2121
@@ -80,6 +80,7 @@ internal GamePresetProperty(UIElement uiElementParent, RegionResourceProp apiRes
8080 }
8181
8282 GamePlaytime = new Playtime ( GameVersion , GameSettings ) ;
83+ GamePropLogger = ILoggerHelper . GetILogger ( $ "[GameProp: { GameVersion . GameName } - { GameVersion . GameRegion } ]") ;
8384
8485 SentryHelper . CurrentGameCategory = GameVersion . GameName ;
8586 SentryHelper . CurrentGameRegion = GameVersion . GameRegion ;
@@ -95,7 +96,8 @@ internal GamePresetProperty(UIElement uiElementParent, RegionResourceProp apiRes
9596 internal IGamePlaytime GamePlaytime { get ; set ; }
9697 internal IRepair ? GameRepair { get ; set ; }
9798 internal ICache ? GameCache { get ; set ; }
98- internal IGameVersion GameVersion { get ; set ; }
99+ internal ILogger GamePropLogger { get ; set ; }
100+ internal IGameVersion GameVersion { get ; set ; }
99101 internal IGameInstallManager GameInstall { get ; set ; }
100102 internal PresetConfig GamePreset { get => GameVersion . GamePreset ; }
101103
@@ -122,50 +124,29 @@ internal string GameExecutableNameWithoutExtension
122124 }
123125
124126 [ field: AllowNull , MaybeNull ]
125- internal string GameExecutablePath
127+ internal string GameExecutableDir
126128 {
127- get => field ??= Path . Combine ( GameVersion . GameDirPath , GameExecutableName ) ;
129+ get => field ??= GameVersion . GameDirPath ;
128130 }
129131
130- internal bool IsGameRunning
132+ [ field: AllowNull , MaybeNull ]
133+ internal string GameExecutablePath
131134 {
132- get => ProcessChecker . IsProcessExist ( GameExecutableName , out _ , out _ , GameExecutablePath , ILoggerHelper . GetILogger ( ) ) ;
135+ get => field ??= Path . Combine ( GameExecutableDir , GameExecutableName ) ;
133136 }
134137
135- internal Process ? GetGameProcessWithActiveWindow ( )
138+ internal bool IsGameRunning
136139 {
137- Process [ ] processArr = Process . GetProcessesByName ( GameExecutableNameWithoutExtension ) ;
138- int selectedIndex = - 1 ;
139-
140- try
141- {
142- for ( int i = 0 ; i < processArr . Length ; i ++ )
143- {
144- Process process = processArr [ i ] ;
145- int processId = process . Id ;
146-
147- string ? processPath = ProcessChecker . GetProcessPathByProcessId ( processId , ILoggerHelper . GetILogger ( ) ) ;
148- string expectedProcessPath = Path . Combine ( GameVersion ? . GameDirPath ?? "" , GameExecutableName ) ;
149- if ( string . IsNullOrEmpty ( processPath ) || ! expectedProcessPath . Equals ( processPath , StringComparison . OrdinalIgnoreCase )
150- || process . MainWindowHandle == IntPtr . Zero )
151- continue ;
152-
153- selectedIndex = i ;
154- return process ;
155- }
156- }
157- finally
158- {
159- for ( int i = 0 ; i < processArr . Length ; i ++ )
160- {
161- if ( i == selectedIndex )
162- continue ;
163- processArr [ i ] . Dispose ( ) ;
164- }
165- }
166- return null ;
140+ get => ProcessChecker . IsProcessExist ( GameExecutableName , out _ , out _ , GameExecutablePath , GamePropLogger ) ;
167141 }
168142
143+ internal bool TryGetGameProcessIdWithActiveWindow ( out int processId , out nint windowHandle )
144+ => ProcessChecker . TryGetProcessIdWithActiveWindow ( GameExecutableNameWithoutExtension ,
145+ out processId ,
146+ out windowHandle ,
147+ GameExecutableDir ,
148+ logger : GamePropLogger ) ;
149+
169150 ~ GamePresetProperty ( )
170151 {
171152 Dispose ( ) ;
0 commit comments