Giter VIP home page Giter VIP logo

tai's Issues

分类颜色不同步

在统计界面中,按天的分类颜色显示和分类中设置的一致,但按周 按月 按年都和分类中设置的颜色不同步。
image
image
image

导致任务栏崩溃重启

Windows 11 家庭版 21H2 22000.376
复现,在tai keepalive窗口所在的虚拟桌面,桌面无窗口,点击多任务或者是手势唤出都会重启
其他虚拟桌面不会崩溃,有窗口最大化之后不会崩溃

日志1
错误应用程序名称: explorer.exe,版本: 10.0.22000.120,时间戳: 0xe846e749
错误模块名称: Windows.UI.Xaml.dll,版本: 10.0.22000.348,时间戳: 0x003360cd
异常代码: 0xc000027b
错误偏移量: 0x0000000000834af0
错误进程 ID: 0x1544
错误应用程序启动时间: 0x01d7f814417d1738
错误应用程序路径: C:\windows\explorer.exe
错误模块路径: C:\Windows\System32\Windows.UI.Xaml.dll
报告 ID: 82a936ed-5d86-4073-b003-3ea526939f8f
错误程序包全名:
错误程序包相对应用程序 ID:
2
故障存储段 ,类型 0
事件名称: APPCRASH
响应: 不可用
Cab ID: 0

问题签名:
P1: explorer.exe
P2: 10.0.22000.120
P3: e846e749
P4: combase.dll
P5: 10.0.22000.282
P6: 426c1ced
P7: 80070057
P8: 000000000005c41b
P9:
P10:

附加文件:

可在此处获取这些文件:
\?\C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_explorer.exe_9e18538ecb5211ffe9aae1efdd49a2305f660_f0d6a280_116933eb-31de-4259-9e70-47f4652ca59e

分析符号:
重新检查解决方案: 0
报告 ID: 82a936ed-5d86-4073-b003-3ea526939f8f
报告状态: 4100
哈希存储段: nCab GUID: 0
3
外壳程序意外停止,explorer.exe 被重新启动。
4
故障存储段 1267383427371873465,类型 4
事件名称: APPCRASH
响应: 不可用
Cab ID: 0

问题签名:
P1: explorer.exe
P2: 10.0.22000.120
P3: e846e749
P4: combase.dll
P5: 10.0.22000.282
P6: 426c1ced
P7: 80070057
P8: 000000000005c41b
P9:
P10:

附加文件:
\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER.1a774f21-3777-42a3-a627-e46f9b3a0bc1.tmp.WERInternalMetadata.xml

可在此处获取这些文件:
\?\C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_explorer.exe_9e18538ecb5211ffe9aae1efdd49a2305f660_f0d6a280_116933eb-31de-4259-9e70-47f4652ca59e

分析符号:
重新检查解决方案: 0
报告 ID: 82a936ed-5d86-4073-b003-3ea526939f8f
报告状态: 268439552
哈希存储段: 3d6fc532bf627bbbb196a68326b7b4b9nCab GUID: 0

更新时出错

提供程序内部更新进行更新,提示发生意料外错误。
该段时间内的详细log:

[Warn] [2022-06-15 19:37:06] 
无法获取进程:Idle的句柄,请尝试以管理员身份运行Tai。
[Caller Info] Line:134,File:Tai\Servicers\Instances\Observer.cs,name:GetProcessInfoByWindowHandle
------------------------

[Warn] [2022-06-15 19:37:06] 
路径的形式不合法。 | Process Name:Idle | Process File: | Process Description:
[Caller Info] Line:90,File:Tai\Servicers\Instances\Observer.cs,name:WinEventProc
------------------------

[Warn] [2022-06-15 19:37:06] 
无法获取进程:Idle的句柄,请尝试以管理员身份运行Tai。
[Caller Info] Line:134,File:Tai\Servicers\Instances\Observer.cs,name:GetProcessInfoByWindowHandle
------------------------

[Warn] [2022-06-15 19:37:06] 
路径的形式不合法。 | Process Name:Idle | Process File: | Process Description:
[Caller Info] Line:90,File:Tai\Servicers\Instances\Observer.cs,name:WinEventProc
------------------------

[Info] [2022-06-15 19:37:06] 
【Wake】进程:explorer 更新时间:10,开始时间:2022/6/15 19:36:56,当前时间:2022/6/15 19:37:06
[Caller Info] Line:269,File:Tai\Servicers\Instances\Main.cs,name:UpdateTime
------------------------

[Info] [2022-06-15 19:37:09] 
【Wake】进程:TeraCopy 更新时间:3,开始时间:2022/6/15 19:37:06,当前时间:2022/6/15 19:37:09
[Caller Info] Line:269,File:Tai\Servicers\Instances\Main.cs,name:UpdateTime
------------------------

[Info] [2022-06-15 19:37:16] 
【Wake】进程:explorer 更新时间:6,开始时间:2022/6/15 19:37:09,当前时间:2022/6/15 19:37:16
[Caller Info] Line:269,File:Tai\Servicers\Instances\Main.cs,name:UpdateTime
------------------------

[Warn] [2022-06-15 19:37:23] 
无法获取进程:dwm的句柄,请尝试以管理员身份运行Tai。
[Caller Info] Line:134,File:Tai\Servicers\Instances\Observer.cs,name:GetProcessInfoByWindowHandle
------------------------

[Warn] [2022-06-15 19:37:23] 
路径的形式不合法。 | Process Name:dwm | Process File: | Process Description:
[Caller Info] Line:90,File:Tai\Servicers\Instances\Observer.cs,name:WinEventProc
------------------------

[Warn] [2022-06-15 19:37:23] 
无法获取进程:Idle的句柄,请尝试以管理员身份运行Tai。
[Caller Info] Line:134,File:Tai\Servicers\Instances\Observer.cs,name:GetProcessInfoByWindowHandle
------------------------

[Warn] [2022-06-15 19:37:23] 
无法获取进程:Idle的句柄,请尝试以管理员身份运行Tai。
[Caller Info] Line:134,File:Tai\Servicers\Instances\Observer.cs,name:GetProcessInfoByWindowHandle
------------------------

[Warn] [2022-06-15 19:37:23] 
路径的形式不合法。 | Process Name:Idle | Process File: | Process Description:
[Caller Info] Line:90,File:Tai\Servicers\Instances\Observer.cs,name:WinEventProc
------------------------

[Warn] [2022-06-15 19:37:23] 
路径的形式不合法。 | Process Name:Idle | Process File: | Process Description:
[Caller Info] Line:90,File:Tai\Servicers\Instances\Observer.cs,name:WinEventProc
------------------------

[Info] [2022-06-15 19:37:23] 
【Wake】进程:Everything 更新时间:6,开始时间:2022/6/15 19:37:16,当前时间:2022/6/15 19:37:23
[Caller Info] Line:269,File:Tai\Servicers\Instances\Main.cs,name:UpdateTime
------------------------

[ Error ] [ 2022-06-15 19:37:42 ] 
SQLiteBuilder handle fail!Exception Message:SQL logic error
near "s": syntax error
[ Caller Info ] Line:247,File:Tai\Librarys\SQLite\SQLiteBuilder.cs,name:HandleTable
------------------------

[ Info ] [ 2022-06-15 19:37:56 ] 
【Wake】进程:chrome 更新时间:6,开始时间:2022/6/15 19:37:49,当前时间:2022/6/15 19:37:56
[ Caller Info ] Line:339,File:Tai\Servicers\Instances\Main.cs,name:UpdateTime
------------------------

[ Error ] [ 2022-06-15 19:37:56 ] 
[程序崩溃异常] An error occurred while updating the entries. See the inner exception for details.
[ Caller Info ] Line:80,File:Tai\App.xaml.cs,name:App_DispatcherUnhandledException
------------------------

[ Error ] [ 2022-06-15 19:37:42 ] 
SQLiteBuilder handle fail!Exception Message:SQL logic error
near "s": syntax error
[ Caller Info ] Line:247,File:Tai\Librarys\SQLite\SQLiteBuilder.cs,name:HandleTable
------------------------

[ Info ] [ 2022-06-15 19:37:56 ] 
【Wake】进程:chrome 更新时间:6,开始时间:2022/6/15 19:37:49,当前时间:2022/6/15 19:37:56
[ Caller Info ] Line:339,File:Tai\Servicers\Instances\Main.cs,name:UpdateTime
------------------------

[ Error ] [ 2022-06-15 19:37:56 ] 
[程序崩溃异常] An error occurred while updating the entries. See the inner exception for details.
[ Caller Info ] Line:80,File:Tai\App.xaml.cs,name:App_DispatcherUnhandledException
------------------------

增加浏览器页面统计

例如我在电脑上将网站YouTube添加为应用,但现在我在这个应用上所耗时间会被算进浏览器,希望可以单独识别

外接显示屏只能记录主屏幕的使用时间

下图是今天到9点到10点的记录
我是一直在使用电脑,只是有时候在副屏上,使用时间应该是2小时,但是只记录了一部分,导致只记录了主屏幕使用的30分钟。
图片
我的副屏是竖着的,所以截图下来是下面的。
图片

[Feature Request] 能否开放软件 API,以此支持更多软件

首先感谢您的软件

比如说,能否让 Tai 监听 127.0.0.1 地址下的某个特定端口,其他软件(或者其插件)每几秒向这个地址发送细节信息,Tai可以统计这些细节信息。通过这种方式可以支持 #47#79 中的部分功能

发送的信息可以包含这些内容:

  • 应用路径:描述这些细节信息来自哪个应用
  • 细节名称:比方说 #47 中提到的语言名称,或者是 #76 中的网页名称

我描述的可能不是很清楚,如果您觉得可行的话,或许我可以试试做下这些功能的支持,只是可能写的比较慢

Tai程序崩溃

删除data文件夹后程序正常启动。
Data文件夹备份:
Data.zip
日志:

[ Tai Version ]  1.0.0.2;

[ WindowsOS Name ]  Microsoft Windows 10 专业版;

[ Screen Size ]  2736 × 1824;


++++++++++++++++++++++++++++++++++++++++++++++++++

[ Error ] [ 2022-06-22 00:11:03 ] 
[程序崩溃异常] System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SQLite.SQLiteException: database disk image is malformed
database disk image is malformed
   在 System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
   在 System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
   在 System.Data.SQLite.SQLiteDataReader.NextResult()
   在 System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
   在 System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<>c.<Reader>b__6_0(DbCommand t, DbCommandInterceptionContext`1 c)
   在 System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
   在 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   在 System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__1()
   在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__0()
   在 System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.Execute(MergeOption mergeOption)
   在 System.Data.Entity.Core.Objects.DataClasses.EntityReference`1.Load(MergeOption mergeOption)
   在 System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.DeferredLoad()
   在 System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.LoadProperty[TItem](TItem propertyValue, String relationshipName, String targetRoleName, Boolean mustBeNull, Object wrapperObject)
   在 System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.<>c__DisplayClass0_0`2.<GetInterceptorDelegate>b__2(TProxy proxy, TItem item)
   在 System.Data.Entity.DynamicProxies.AppModel_BCA53A72C023DFE6EE1E10AC451ABCB26EFE9A210103FE02921FC3CC8487BCBB.get_Category()
   在 Core.Servicers.Instances.AppData.<>c.<Load>b__5_5(AppModel m)
   在 System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
   在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   在 Core.Servicers.Instances.AppData.Load()
   在 Core.Servicers.Instances.Main.<Run>b__23_0()
   在 System.Threading.Tasks.Task.InnerInvoke()
   在 System.Threading.Tasks.Task.Execute()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Core.Servicers.Instances.Main.<Run>d__23.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
   在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
[ Caller Info ] Line:80,File:Tai\App.xaml.cs,name:App_DispatcherUnhandledException
------------------------

[ Error ] [ 2022-06-22 00:47:04 ] 
[程序崩溃异常] System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SQLite.SQLiteException: database disk image is malformed
database disk image is malformed
   在 System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
   在 System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
   在 System.Data.SQLite.SQLiteDataReader.NextResult()
   在 System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
   在 System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<>c.<Reader>b__6_0(DbCommand t, DbCommandInterceptionContext`1 c)
   在 System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
   在 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   在 System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__1()
   在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__0()
   在 System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.Execute(MergeOption mergeOption)
   在 System.Data.Entity.Core.Objects.DataClasses.EntityReference`1.Load(MergeOption mergeOption)
   在 System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.DeferredLoad()
   在 System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.LoadProperty[TItem](TItem propertyValue, String relationshipName, String targetRoleName, Boolean mustBeNull, Object wrapperObject)
   在 System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.<>c__DisplayClass0_0`2.<GetInterceptorDelegate>b__2(TProxy proxy, TItem item)
   在 System.Data.Entity.DynamicProxies.AppModel_BCA53A72C023DFE6EE1E10AC451ABCB26EFE9A210103FE02921FC3CC8487BCBB.get_Category()
   在 Core.Servicers.Instances.AppData.<>c.<Load>b__5_5(AppModel m)
   在 System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
   在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   在 Core.Servicers.Instances.AppData.Load()
   在 Core.Servicers.Instances.Main.<Run>b__23_0()
   在 System.Threading.Tasks.Task.InnerInvoke()
   在 System.Threading.Tasks.Task.Execute()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Core.Servicers.Instances.Main.<Run>d__23.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
   在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
[ Caller Info ] Line:80,File:Tai\App.xaml.cs,name:App_DispatcherUnhandledException
------------------------

[ Error ] [ 2022-06-22 00:47:32 ] 
[程序崩溃异常] System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SQLite.SQLiteException: database disk image is malformed
database disk image is malformed
   在 System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
   在 System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
   在 System.Data.SQLite.SQLiteDataReader.NextResult()
   在 System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
   在 System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<>c.<Reader>b__6_0(DbCommand t, DbCommandInterceptionContext`1 c)
   在 System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
   在 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   在 System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__1()
   在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__0()
   在 System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.Execute(MergeOption mergeOption)
   在 System.Data.Entity.Core.Objects.DataClasses.EntityReference`1.Load(MergeOption mergeOption)
   在 System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.DeferredLoad()
   在 System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.LoadProperty[TItem](TItem propertyValue, String relationshipName, String targetRoleName, Boolean mustBeNull, Object wrapperObject)
   在 System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.<>c__DisplayClass0_0`2.<GetInterceptorDelegate>b__2(TProxy proxy, TItem item)
   在 System.Data.Entity.DynamicProxies.AppModel_BCA53A72C023DFE6EE1E10AC451ABCB26EFE9A210103FE02921FC3CC8487BCBB.get_Category()
   在 Core.Servicers.Instances.AppData.<>c.<Load>b__5_5(AppModel m)
   在 System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
   在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   在 Core.Servicers.Instances.AppData.Load()
   在 Core.Servicers.Instances.Main.<Run>b__23_0()
   在 System.Threading.Tasks.Task.InnerInvoke()
   在 System.Threading.Tasks.Task.Execute()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Core.Servicers.Instances.Main.<Run>d__23.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
   在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
[ Caller Info ] Line:80,File:Tai\App.xaml.cs,name:App_DispatcherUnhandledException
------------------------

[ Error ] [ 2022-06-22 00:47:55 ] 
[程序崩溃异常] System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SQLite.SQLiteException: database disk image is malformed
database disk image is malformed
   在 System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
   在 System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
   在 System.Data.SQLite.SQLiteDataReader.NextResult()
   在 System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
   在 System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<>c.<Reader>b__6_0(DbCommand t, DbCommandInterceptionContext`1 c)
   在 System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
   在 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   在 System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__1()
   在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__0()
   在 System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   在 System.Data.Entity.Core.Objects.ObjectQuery`1.Execute(MergeOption mergeOption)
   在 System.Data.Entity.Core.Objects.DataClasses.EntityReference`1.Load(MergeOption mergeOption)
   在 System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.DeferredLoad()
   在 System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.LoadProperty[TItem](TItem propertyValue, String relationshipName, String targetRoleName, Boolean mustBeNull, Object wrapperObject)
   在 System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.<>c__DisplayClass0_0`2.<GetInterceptorDelegate>b__2(TProxy proxy, TItem item)
   在 System.Data.Entity.DynamicProxies.AppModel_BCA53A72C023DFE6EE1E10AC451ABCB26EFE9A210103FE02921FC3CC8487BCBB.get_Category()
   在 Core.Servicers.Instances.AppData.<>c.<Load>b__5_5(AppModel m)
   在 System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
   在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   在 Core.Servicers.Instances.AppData.Load()
   在 Core.Servicers.Instances.Main.<Run>b__23_0()
   在 System.Threading.Tasks.Task.InnerInvoke()
   在 System.Threading.Tasks.Task.Execute()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Core.Servicers.Instances.Main.<Run>d__23.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
   在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
[ Caller Info ] Line:80,File:Tai\App.xaml.cs,name:App_DispatcherUnhandledException
------------------------

Feature Request: 提供顺序时间视图

我希望能知道,我在某个时间段内,焦点都在什么上或在什么之间移动(乃至键盘和鼠标的活动和活动频率,当然,只是说说)
这应该是比较符合这个软件统计行为的思路的,所以我希望有一个类似这样的视图:
91D3D65D4D92399B03592990D4DB1D6C

给应用分类可以增加一些更快捷的方式吗?

目前想要添加一个分类要

  1. 分类Tab
  2. 点击已有分类
  3. 点击添加应用
  4. 在茫茫多的应用里去找自己的应用。

希望简化这个流程,直接在界面的任意有图标的地方都能通过右键弹出菜单设置分类(我发现目前似乎所有有图标的地方都没有右键功能?)

tai统计时长异常

image
打开的软件基本都没有被正常统计时长,adobe系软件尤其严重,系统是win 11。

时长统计异常

image

如图,今天还没到13点呢,为啥Tai app会记录13点之后的使用时间?
已知,我的电脑自动休眠之后打开Tai就编程这样子了

Feature Request: 关于加入编程语言时间汇总功能的建议

Discussons好像没法提交,所以提交成Issues请大佬评估下。

目前很多人喜欢汇总自己在某种语言上花的时间,也有不少软件已经能实现这种功能,但是目前基本上都是通过插件的方式存在,比如不得不在VS/Sublime/IDEA/Eclipse等分别装对应的插件才能实现汇总功能,不太方便。

Tai能够正常识别当前活动的程序,那么是不是可以用Tai来实现对编程语言的时间汇总功能功能?
大致想法如下:
1,在Tai中程序详情的旁边加入一个按键,例如“此程序为编程工具”,点此按键将该程序存储在数据库编程工具列表,之后侦测到此程序列表中的程序便开始进行下面第2条。
2,如果当前活动的程序是编程工具,则通过OCR识别屏幕文本,通过语言字典识别目前正在编辑哪种语言。例如用tesseract的c#版本https://github.com/charlesw/tesseract

  • 例如 c#在IDE中上方文件栏和项目资源管理器一般会有.cs/.csproj/等文件名, c++是.h/.c/cpp java是.java html是.htm/html/.css/ JS是.js , 等等,这个字典最好可以手动编辑

3, 考虑到OCR比较费资源,可以把分辨率设置为10分钟,每10分钟侦测一次屏幕OCR,获取到对应的语言算10分钟,最后进行每日汇总。

当然也可能有更好的方法。

程序意外崩溃

我的设备信息:
版本 Windows 10 专业版
版本号 21H1
操作系统内部版本 19043.2006
体验 Windows Feature Experience Pack 120.2212.4180.0

以下是崩溃日志:
2022-10-04.log

Xshell 进程名和图标不显示

平台:Windows 10
进程名称:Xshell
进程路径:C:\Program Files (x86)\NetSarang\Xshell 7\Xshell.exe

期望的效果:有短标题 + 进程的图标

闪退崩溃

操作细节:在统计里面选择其中的某个时间段里的软件,右键忽略此应用就会崩溃
Tai_K1AtQQzUBw
2022-11-10.log

[Feature Request] 发布安装程序

今天发现 Tai 不知道什么时候崩溃(也可能是其他原因)退出了,要重新打开只能进入文件夹再打开程序,如果能安装的话就会方便很多。
另外不知道能不能实现自动重启?因为是统计类软件,发现数据丢失的时候还是挺难受的。

未知BUG

系统中一个未知进程被一直统计,而且全天被统计
Tai 11-21 09 38
今天还没过完就统计了一天。忽略了也没用
Tai_bgBzrfUd8F

readme中可加入使用scoop安装

scoop 安装方式:

# 1. 按照 https://scoop.sh/ 安装 scoop
# 2. 在 `cmd` 或 `powershell` 中安装含有 `tai` 的 `bucket`:
scoop bucket add scoop-it https://github.com/younger-1/scoop-it
# 3. 安装 `tai`
scoop install tai
# 4. 升级 `tai` 版本
scoop update tai

查看详细就报错 重装也一样

[Error] [2022-02-11 19:47:27]
[程序崩溃异常] 该字符串未被识别为有效的 DateTime。
[Caller Info] Line:58,File:Tai\App.xaml.cs,name:App_DispatcherUnhandledException

Errors in Log file

App Version: v1.0
OS Version: Win10 21H1

[Error] [2021-12-14 14:11:57]
路径的形式不合法。 | Process Name:Taskmgr | Process File: | Process Description:
[Caller Info] Line:82,File:C:\Users\Banpocat\source\repos\Tai\Core\Servicers\Instances\Observer.cs,name:WinEventProc

==================================

软件闪退bug

笔记本断开电源后,程序闪退。日志中没有记录。测试时关闭了所有窗口与后台程序(除了七彩虹控制中心Control Center3.0),仍然闪退。

Tai版本:1.3.0.0
笔记本型号:七彩虹将星x15 xs
windows型号:Windows 11 专业版 22H2 22621.674

2个小问题or1个?

1:管理员模式启动的情况下,无法自启动。通过任务计划启动则打不开或者崩溃。
2022-09-26.log

2:统计视图不能正确统计?
image
这里加起来差不多有55分钟,但是比例没显示正确,是大佬设计如此还是错误显示。

工作电脑和个人电脑的数据该如何合并

rt,工作电脑在公司,下班回家使用个人电脑,但是想两个数据可以合并?因时间上并不冲突,把两份data.db合并可以解决吗,我不太清楚数据库的操作抱歉

Add license

请增加license保护自己的软件著作权

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.