获取Windows句柄的WNDPROC
答
使用GetWindowLongPtr(hwnd,GWLP_WNDPROC)。
注意:GetWindowLongPtr实际上是#define
d GetWindowLong为32位系统,因此为了在Delphi中导入它,您可能需要使用GetWindowLong。同样,GetWindowLongPtr本身是#define
d可以是GetWindowLongPtrA或GetWindowLongPtrW(对于非Unicode和unicode目标),因此如果导入系统不是非常聪明的话,您可能还需要手动为Delphi选择正确的名称。
请记住,如果你要调用所获得的窗口过程,你应该使用CallWindowProc做到这一点。感谢@In silico提示。
请注意,返回的值并非总是指向窗口过程的实际指针。有时它只是一种被CallWindowProc
识别和正确处理的手柄。例如,如果您的应用程序是ANSI,但您的窗口属于Unicode组件(反之亦然),则不会获得真实的函数指针。有关更多详细信息,请参阅this posting in The Old New Thing。
非常感谢。 – Salvador 2010-12-03 00:18:59