FindWindow 收到的句柄是否需要释放?

Does a handle received by FindWindow need to be released?

我正在编写的应用程序正在使用虚拟键盘。要显示、隐藏、调整大小或移动虚拟键盘,我首先需要通过调用 FindWindow 函数来获取它的句柄,然后通过 PostMessage.

向它发送一些消息

由于我没有使用 winapi 的经验,我的问题是我是否需要以某种方式释放这个句柄,或者我可以在完成后忘记它吗?

虚拟键盘是一个独立的进程,其生命周期比我的应用程序长。

您无需完成此句柄。它由创建 window 的进程所有,该进程还负责销毁它。

与内核句柄(文件句柄、事件句柄、互斥句柄等)不同,window 句柄不进行引用计数。你调用 FindWindow,然后用 window 句柄做需要做的事情,然后就可以了。

但是请注意,由于系统不会跟踪对 window 句柄的引用,因此如果 window 被销毁,那么您可以保留被销毁的 [=20] 的句柄=].如果系统 re-uses 处理那么你现在有一个不同的句柄 window.

如果可能的话,当您以这种方式在多个进程之间协调用户界面时,您还应该传达 window 销毁事件以避免一个进程持有陈旧的句柄。