例如,
SetWindowsHookEx方法需要一个TFNHookProc函数
其定义是:
TFNHookProc = function (code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
但我把具体操作写在类函数里面了,
如果硬要把函数提出来,就要把好多成员都提出来,感觉很不好。MakeObjectInstance都有办法把TWndMethod转成指针,我想应该有办法才对呀。
SetWindowsHookEx方法需要一个TFNHookProc函数
其定义是:
TFNHookProc = function (code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
但我把具体操作写在类函数里面了,
如果硬要把函数提出来,就要把好多成员都提出来,感觉很不好。MakeObjectInstance都有办法把TWndMethod转成指针,我想应该有办法才对呀。
解决方案 »
- 恭喜二位新版主上任,散分
- 使用函数问题
- 如何从ACCESS转换到SQL SERVER
- 第一次进入请多多指教
- 一个关于菜单的最简单问题,在线等
- 如何控制主窗口??
- 如果用SpinEdit控件呢,SpinEdit1的值从2000到2009(年),SpinEdit2的值从1到12(月)怎样查询任意月的数据?怎样查询任意年月的数据?
- 请问各位大虾有谁做过关于电子元器件(译码器,门电路等)的仿真编程
- 请问大家delphi有哪些常用的快捷键
- 各位大虾,如何判断出程序没有响应的状态并杀死该进程?
- ActiveForm在IE中调用,关闭IE时出现读地址错,怎么办啊
- MS SQL Server和Access分别取得随机记录(随机抽题)之完美篇
http://www.delphifans.com/infoView/Article_216.html
正是我想要的东东呀!
这里是原作者在DFW的贴,很有深度,可惜我水平有限,对汇编又一窍不通,他们讨论的内容看得不是很明白,只好直接引用作者的研究成果了。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2672562
-->>
procedure Button1Click(Self: TForm1; Sender: TObject); // 普通函数//参考如下代码type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function EnumFunc({hwnd: HWND隐含掉}lParam: LPARAM): BOOL; stdcall;
public
{ Public declarations }
end;
//...procedure TForm1.Button1Click(Sender: TObject);
type
TEnumFunc = function ({hwnd: HWND隐含掉}lParam: LPARAM): BOOL stdcall of object;
var
vEnumFunc: TEnumFunc;
begin
vEnumFunc := EnumFunc;
EnumChildWindows(Handle, TMethod(vEnumFunc).Code, Integer(Self))
end;function TForm1.EnumFunc(lParam: LPARAM): BOOL;
var
hwnd: THandle absolute Self;
begin
//Self已经不能用 Memo1也不能访问
TForm1(lParam).Memo1.Lines.Add(IntToStr(hwnd));
Result := True;
end;//其实一般的回调函数都有一个预留参数,在调用的时候写入,在回调的时候读取