2010-12-03 150 views

回答

13

使用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

+0

非常感谢。 – Salvador 2010-12-03 00:18:59