我写的应用程序正在使用虚拟键盘。要显示,隐藏,调整大小或移动虚拟键盘,我首先需要通过调用FindWindow
函数来获取它,然后通过PostMessage
向它发送一些消息。
由于我没有使用winapi的经验,我的问题是我是否需要以某种方式释放此句柄,或者我可以在完成后忘记它?
虚拟键盘是一个独立的过程,其使用寿命比我的应用程序更长。
答案 0 :(得分:4)
您无需最终确定此句柄。它由创建窗口的进程所拥有,该窗口也负责销毁它。
与内核句柄(文件句柄,事件句柄,互斥锁句柄等)不同,窗口句柄不是引用计数。你调用FindWindow
,然后做窗口句柄需要做的事情。
但是请注意,由于系统不跟踪对窗口句柄的引用,如果窗口被销毁,那么您可以保留一个被破坏窗口的句柄。如果系统重新使用该句柄,那么您现在可以使用不同的窗口。
如果可能的话,当您以这种方式协调多个进程之间的用户界面时,您还应该传达窗口销毁事件,以避免一个进程留下过时的句柄。