阅读:1339回复:4
钩子和WINAPI疑问
为了钩住OpenClipboard,我定义了Hook_OpenClipboard如下
BOOL WINAPI Hook_OpenClipboard(HWND hWndNewOwner) { TRACE("\n!Hook_OpenClipboard\n"); MessageBox(NULL,"OpenClipboard can not run", "PCProtector",MB_OK); return NULL; } 为什么要在声明中加WINAPI. 我测试过,不加WINAPI时容易出错 |
|
|
沙发#
发布于:2004-06-23 10:12
为了钩住OpenClipboard,我定义了Hook_OpenClipboard如下 看看__pascal、__fortran、__cdecl和__stdcall等你就明白了。 以后这样的问题到普通C++论坛问就好了 |
|
|
板凳#
发布于:2004-06-23 11:24
我知道这个问题在网上很多,但是大部分只讲各种调用约定之间的区别。我还是不明白为什么要加winapi,试验中不加时钩子也可以成功的,只是特殊情况下异常
|
|
|
地板#
发布于:2004-06-23 13:13
API函数都是STDCALL的,所以你也必须遵循同样的标准。。。。。。
|
|
|
地下室#
发布于:2004-06-30 18:26
__stdcall调用约定是由被调用程序来负责销毁堆栈的!传入参数固定
Windows中的API都是__stdcall约定!! __fastcall是由寄存器来传递参数 __cdec是由调用者来销毁堆栈,就可以传递不定个数的参数给调用者 |
|