我使用以下 RegEx 来验证十六进制/十进制数:
(0x)?[0-9A-Fa-f][0-9A-Fa-f]*
Run Code Online (Sandbox Code Playgroud)
这正确匹配:
1234 (decimal)
0x12CD (hex)
0x12cd (hex lowercase)
Run Code Online (Sandbox Code Playgroud)
然而,它也允许
12CD (hex without the 0x prefix)
Run Code Online (Sandbox Code Playgroud)
在允许十六进制 [A-Fa-f] 字符之前,RegEx 有没有办法要求 0x 前缀?
Windows 8/10 中的 UWP(或“Metro”)应用程序不在前台时可以暂停。此状态下的应用程序继续存在,但不再消耗 CPU 时间。似乎引入此更改是为了提高平板电脑和手机等低功耗/存储设备的性能。
在这种状态下检测进程的最优雅和最简单的方法是什么?
目前我可以看到两种可能的解决方案:
调用 NtQuerySystemInformation() 并枚举每个进程和每个线程。如果所有线程都处于挂起状态,则进程被“挂起”。这种方法需要大量代码,关键是 NtQuerySystemInformation() 只是半文档化的,可以在未来的操作系统中删除。NtQueryInformationProcess() 也可以针对同样的问题提供类似的解决方案。
调用 GetProcessTimes() 并记录每个进程的计数器。等待较长时间(分钟)并再次检查。如果进程计数器没有改变,则假定进程已挂起。我承认这是一个黑客,但如果时间段足够长,也许可以工作。
有没有更优雅的方式?