2010-12-03 156 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