【发布时间】:2013-03-08 00:18:31
【问题描述】:
阅读another question 的cmets,我发现使用GetWindowThreadProcessId Windows API 方法时存在遇到竞争条件的风险。这是多大的风险?
请允许我提供我正在尝试的背景。我正在用 C# 编写一个计时应用程序供我个人使用。我的意图是在活动窗口发生变化时让应用程序检测(通过 Win API 调用),以便我可以记录正在使用的应用程序的时间。我已经找到了检测活动窗口何时更改的代码;现在我正在尝试确定与该窗口关联的进程。我在 SO 上找到了几篇指向 GetWindowThreadProcessId 作为解决方案的帖子,但正如我所提到的,使用它似乎存在潜在问题。如果GetWindowThreadProcessId 不是一个安全的方法,那么我愿意接受其他选择。
我希望将代码完全保留在 C# 中,但我并不(完全)反对在必要时将部分代码移入 C/C++。
谢谢!
【问题讨论】:
标签: c# .net winapi pinvoke unmanaged