我正在编写的应用程序使用的是虚拟键盘。要显示、隐藏、调整或移动虚拟键盘,我首先需要通过调用FindWindow函数获得它的句柄,然后通过PostMessage向它发送一些消息。
由于我没有使用winapi的经验,我的问题是,我是否需要以某种方式释放这个句柄,或者一旦完成,我就可以忘记它吗?
虚拟键盘本身就是一个进程,它的生命周期比我的应用程序要长。
发布于 2017-01-25 16:56:31
您不需要完成此句柄。它属于创建该窗口的进程,该进程也负责销毁该窗口。
与内核句柄(文件句柄、事件句柄、互斥锁句柄等)不同窗操纵柄不计算参照数量。您调用FindWindow,然后对窗口句柄做需要做的事情。
但是,请注意,由于系统不会跟踪对窗口句柄的引用,因此如果窗口被销毁,则可以让您持有该被销毁窗口的句柄。如果系统重用了该句柄,那么您现在就拥有了一个不同窗口的句柄。
如果可能的话,当您以这种方式协调多个进程之间的用户界面时,您还应该传递窗口销毁事件,以避免一个进程持有过时的句柄。
https://stackoverflow.com/questions/41846936
复制相似问题