我有一个非常基本的问题:
是EnumWindows
线程安全吗?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497(v=vs.85).aspx
由于
答案 0 :(得分:2)
不在主线程中。这是我的问题
user32.dll中的某些函数是线程敏感的,如果你在工作线程上调用SendMessage()获取自定义消息,你可以挖掘自己一个非常深的漏洞。但是,不,EnumWindows()没有这样的问题,它不关心线程是否正在抽取消息循环并且不依赖于线程状态。你当然需要考虑你在回调中获得的窗口句柄可能是一个窗口,这个窗口在之前的一小段时间内被破坏,EnumWindows()会不冻结每个线程创建窗口的每个进程。
答案 1 :(得分:1)
您可以从任何线程安全地呼叫EnumWindows
。作为一般规则,Windows API函数是线程安全的。此一般规则的例外情况将在功能文档中标记。