首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

在98系统上setwindowshookex函数hhook返回值为0

2012-12-15 
在98系统下setwindowshookex函数hhook返回值为0在98系下setwindowshookex函数hhook返回值为0,在xp下又能正

在98系统下setwindowshookex函数hhook返回值为0
在98系下setwindowshookex函数hhook返回值为0,在xp下又能正常使用?请教高手。
[解决办法]
把具体的代码附上来看看。
[解决办法]
有些HOOK类型在98下不支持,比如_LL的HOOK.

想要知道API的返回值是什么意思,就在API返回后查Err.LastDllError.

将值传入GetRetMessage:

Option Explicit
'*************************************************************************
'**模 块 名:ModGetRetMessage
'**说    明:根据API返回值,输出相应的字符串说明.方便API调试.
'**创 建 人:嗷嗷叫的老马
'**日    期:2009年4月16日
'**备    注: 紫水晶工作室 版权所有
'**          更多模块/类模块请访问我站:  http://www.m5home.com
'**版    本:V1.0
'*************************************************************************

Private Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" ( _
     ByVal dwFlags As Long, _
     ByRef lpSource As Any, _
     ByVal dwMessageId As Long, _
     ByVal dwLanguageId As Long, _
     ByVal lpBuffer As String, _
     ByVal nSize As Long, _
     ByRef Arguments As Long) As Long

'Private Const FORMAT_MESSAGE_FROM_HMODULE As Long = &H800
'Private Const FORMAT_MESSAGE_FROM_STRING As Long = &H400
'Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000

Public Enum MESSAGE_TYPE            '一般只用到这三个值.有更多需要就自己加吧.
    FORMAT_MESSAGE_FROM_HMODULE = &H800
    FORMAT_MESSAGE_FROM_STRING = &H400
    FORMAT_MESSAGE_FROM_SYSTEM = &H1000
End Enum

Public Function GetRetMessage(ByVal lRetValue As Long, ByVal lType As MESSAGE_TYPE) As String
    '根据API返回值,输出相应的字符串说明.
    'lRetValue - API的返回值
    'lType - 按什么类型的消息输出字符串
    '返回值:
    '       成功返回得出的字符串,失败返回空字符串.
    Dim lRet As Long, sBuffer As String
    
    sBuffer = Space(255)
    lRet = FormatMessage(lType, ByVal 0&, lRetValue, 0, sBuffer, 255, ByVal 0&)
    GetRetMessage = Mid(sBuffer, 1, lRet)
End Function

下载地址:

http://www.m5home.com/bbs/thread-2509-1-1.html
[解决办法]
用的是WH_KEYBOARD_LL,在XP下能正常使用,98下返回0。请教还有什么方法在98下记录键盘输入?
[解决办法]
引用:
用的是WH_KEYBOARD_LL,在XP下能正常使用,98下返回0。请教还有什么方法在98下记录键盘输入?

_LL的HOOK都只能在NT内核里,至少得是WIN2000.

98下要进行全局的HOOK,需要做一个全局HOOK的DLL.

这样的DLL需要VC编写,是标准DLL.

热点排行