Project1

标题: 请教一个dll [打印本页]

作者: yangff    时间: 2008-9-1 21:25
标题: 请教一个dll
这个dll是用来屏蔽按键的,有vb代码什么的,请教下在ruby里怎么用(屏蔽F2)
http://rpg.blue/upload_program/files/Lib_100618203.rar
以下引用yangff于2008-8-31 13:31:23的发言:

VB版本有,通过api+dll。我希望又能人用ruby使用这个dll(底层Hook)
dll:不猛击的是SB

   本帖相关代码如下:
Option Explicit

Private Declare Function StartMaskKey Lib "MaskKey" (lpdwVirtualKey As Long, ByVal nLength As Long, ByVal lpfnKeyboarProc As Long, Optional ByVal bDisableKeyboard As Boolean = False) As Long

Private Declare Function StopMaskKey Lib "MaskKey" () As Long



Private Sub cmdStartMask_Click()

   ' 屏蔽 A, B, C, 上, 下, 左, 右及两个win键

   Dim key(8) As Long

   key(0) = vbKeyA

   key(1) = vbKeyB

   key(2) = vbKeyC

   key(3) = vbKeyLeft

   key(4) = vbKeyRight

   key(5) = vbKeyUp

   key(6) = vbKeyDown

   key(7) = &H5B               ' 左边的win键

   key(8) = &H5C               ' 右边的win键

   StartMaskKey key(0), UBound(key) + 1, AddressOf KeyboardProc

End Sub



Private Sub cmdStopMask_Click()

   StopMaskKey

End Sub


   本帖相关代码如下:
Option Explicit



Private Const WM_KEYDOWN = &H100

Private Const WM_KEYUP = &H101

Private Const WM_SYSKEYDOWN = &H104

Private Const WM_SYSKEYUP = &H105



Public Type KBDLLHOOKSTRUCT

   vkCode As Long              ' 虚拟按键码(1--254)

   scanCode As Long            ' 硬件按键扫描码

   flags As Long               ' flags

   time As Long                ' 消息时间戳

   dwExtraInfo As Long         ' 额外信息

End Type



Public Enum KEYACTION

   ACTION_KEYDOWN = WM_KEYDOWN

   ACTION_KEYUP = WM_KEYUP

   ACTION_SYSKEYDOWN = WM_SYSKEYDOWN

   ACTION_SYSKEYUP = WM_SYSKEYUP

End Enum



' 全局键盘钩子回调函数

' 参数: action 标识键盘消息(按下,弹起), keyStruct 包含按键信息

Public Function KeyboardProc(ByVal action As KEYACTION, keyStruct As KBDLLHOOKSTRUCT) As Boolean

   Select Case action

       Case ACTION_KEYDOWN

           Debug.Print keyStruct.vkCode, "按下键盘按键"

       Case ACTION_KEYUP

           Debug.Print keyStruct.vkCode, "弹起键盘按键"

       Case ACTION_SYSKEYDOWN

      

       Case ACTION_SYSKEYUP

      

   End Select

   

   ' 返回 True 表示继续传递按键消息

   ' 返回 False 表示结束按键消息传递

   KeyboardProc = False

End Function

[LINE]1,#dddddd[/LINE]此贴于 2008-9-14 22:56:47 被版主八云紫提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]此贴于 2008-9-16 22:32:15 被版主八云紫提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]本贴由论坛斑竹八云紫结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^
作者: 龙轩    时间: 2008-9-2 04:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangff    时间: 2008-9-2 04:56
我不是学c的
作者: 决不放弃    时间: 2008-9-2 07:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沉影不器    时间: 2008-9-2 21:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangff    时间: 2008-9-2 22:08
以下引用沉影不器于2008-9-2 13:41:58的发言:

我没学多少vb,只知道vb做的dll不像c那么方便,似乎不能输出函数
具体您可以搜索"vb 输出函数",好像vb5.0时期有个老外弄出个vb输出函数的办法

如果输出,那么就跟api调用没两样了

这个dll是c的!!!!!!
有在vb里的api调用方法。但是ruby里没有指针的概念所以不知道AddressOf 怎么办。还有ruby里的数组也不能直接调用………………
作者: 然风    时间: 2008-9-2 22:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangff    时间: 2008-9-3 04:17
以下引用然风于2008-9-2 14:41:06的发言:

VB貌似可以输出函数。。 VB很强大的。。老版本的魔兽争霸的底层数据架构就是用的VB。。。不是某些人说的JAVA和c++

PS:龙轩 你的签名那个“小宝宝” 是 五毒兽 。。。。。你要是觉的可爱 完全可以拿去煮了吃吧!!

vb就算输出函数了,也是COM的dll。
等等!!!!!!!
我的dll是c++正统NB编译的!!!!!!!!!
作者: 沉影不器    时间: 2008-9-4 00:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangff    时间: 2008-9-4 04:25
以下引用沉影不器于2008-9-3 16:07:12的发言:

似乎用到回调函数了...
rm里头回调函数怎么用来着?半年前我就想用回调写个调出用户字体的东西,可是回调这玩意儿在rm里怎么用呢

一旦按键被拦截就执行KeyboardProc做出反应
作者: 火鸡三毛老大    时间: 2009-6-12 08:00
以下引用龙轩于2008-9-1 20:34:11的发言:

你可以适当的修改你下你自己的dll

这个还用你说……




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1