@@ -15,8 +15,8 @@ namespace TimeControl
1515{
1616 public partial class ControlPanel : Form
1717 {
18- bool closable = false ;
19- List < App > appList = new List < App > ( ) ;
18+ private bool closable = false ;
19+ List < App > appList = new ( ) ;
2020 #region Dllimport
2121
2222 [ Flags ]
@@ -118,7 +118,7 @@ public ControlPanel()
118118 InitializeComponent ( ) ;
119119 }
120120
121- private void startButton_Click ( object sender , EventArgs e )
121+ private void StartButton_Click ( object sender , EventArgs e )
122122 {
123123 IntPtr nowDesktop = GetThreadDesktop ( GetCurrentThreadId ( ) ) ;
124124 IntPtr newDesktop = CreateDesktop ( "Lock" , null , null , 0 , ACCESS_MASK . GENERIC_ALL , IntPtr . Zero ) ;
@@ -133,7 +133,7 @@ private void startButton_Click(object sender, EventArgs e)
133133 CloseDesktop ( newDesktop ) ;
134134 }
135135
136- private void notifyIcon_MouseDoubleClick ( object sender , MouseEventArgs e )
136+ private void NotifyIcon_MouseDoubleClick ( object sender , MouseEventArgs e )
137137 {
138138 Show ( ) ;
139139 }
@@ -153,52 +153,62 @@ private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
153153 Close ( ) ;
154154 }
155155
156- private void linkLabel1_LinkClicked ( object sender , LinkLabelLinkClickedEventArgs e )
156+ private void LinkLabel1_LinkClicked ( object sender , LinkLabelLinkClickedEventArgs e )
157157 {
158158 Process . Start ( "explorer.exe" , "https://icons8.com/icon/19614/icon" ) ;
159159 }
160160
161- private void backgroundProcessMonitor_DoWork ( object sender , DoWorkEventArgs e )
162- {
163- while ( true )
164- {
165- foreach ( App app in appList ) //计算进程时间
166- {
167- if ( Process . GetProcessesByName ( app . Name ) . Length != 0 )
168- { app . Run ( ) ; }
169- }
170- Thread . Sleep ( 1000 ) ;
171- }
172- }
173-
174161 private void ControlPanel_Load ( object sender , EventArgs e )
175162 {
176- backgroundProcessMonitor . RunWorkerAsync ( ) ;
163+ processMonitorTimer . Start ( ) ;
177164 }
178-
179- private void appAddButton_Click ( object sender , EventArgs e ) //添加打开的窗口
165+
166+ private void AppAddButton_Click ( object sender , EventArgs e ) //添加打开的窗口
180167 {
168+ processMonitorTimer . Stop ( ) ;
181169 appList . Clear ( ) ;
182170 Process [ ] processes = Process . GetProcesses ( ) ;
183171 foreach ( Process process in processes )
184172 {
185173 if ( ! string . IsNullOrEmpty ( process . MainWindowTitle ) )
186174 {
187- appList . Add ( new App ( process . ProcessName , process . MainModule . FileName ) ) ;
175+ try
176+ {
177+ appList . Add ( new App ( process . ProcessName , process . MainModule . FileName ) ) ;
178+ }
179+ catch ( Exception ex )
180+ {
181+ MessageBox . Show ( ex . Message , "错误" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ; //防止无法访问错误
182+ }
188183 }
189184 }
190- ListBoxController . Refresh ( usageBox , appList ) ;
185+ CalculateTime ( ) ;
191186 }
192187
193- private void removeButton_Click ( object sender , EventArgs e ) //移除所有的已添加窗口
188+ private void RemoveButton_Click ( object sender , EventArgs e ) //移除所有的已添加窗口
194189 {
195190 appList . Clear ( ) ;
196- ListBoxController . Refresh ( usageBox , appList ) ;
191+ CalculateTime ( ) ;
192+ }
193+
194+ private void RefreshButton_Click ( object sender , EventArgs e ) //重新获取所有软件所用时间
195+ {
196+ CalculateTime ( ) ;
197197 }
198198
199- private void refreshButton_Click ( object sender , EventArgs e ) //重新获取所有软件所用时间
199+ private void ProcessMonitorTimer_Tick ( object sender , EventArgs e )
200+ {
201+ foreach ( App app in appList ) //计算进程时间
202+ {
203+ if ( Process . GetProcessesByName ( app . Name ) . Length != 0 )
204+ { app . Run ( ) ; }
205+ }
206+ }
207+ private void CalculateTime ( ) //将进程时间推送到ListBox控件
200208 {
209+ processMonitorTimer . Stop ( ) ;
201210 ListBoxController . Refresh ( usageBox , appList ) ;
211+ processMonitorTimer . Start ( ) ;
202212 }
203213 }
204214}
0 commit comments