设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2441|回复: 7
打印 上一主题 下一主题

今天论坛很无聊

 关闭 [复制链接]

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

跳转到指定楼层
1
发表于 2008-6-7 06:59:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
这个写在最前面:
    全部VIP寻找 C\C++达人, 了解ruby与C\C++之间调用的人.
    我只问一个问题!!
    高手或有意者请PM我, 若能解决 全额VIP奉上!!
一下是正文:   = =b
rt
正好论坛上有很多人在做鼠标脚本
所以把我游戏里的那个DX Input提出来编译成dll了
让RM调用, 因为RM不能require dll, 所以只能用Win32API
效果上不是很好{/gg}
好歹RM那些代码也发了我2小时, 索性就贴出来了 = =b

PS 以前夏娜也有写过一个, 不过可惜未给出dll的代码
   现在我把我的给出来, 其实就是以前的工程那个类直接提取出来,
   去掉一些东西, 添了几个导出函数编译成的,由于写的仓促
   还有很多补足... ...   

orz  我发的dll是Debug版本的, 应该没有人可以用吧
带有src的(下面连接)
先咔嚓掉 完整了再说

就几KB  - -
使用方法
main前添加
$: << File.expand_path(File.dirname(__FILE__))
require 'RbKK.rb'

然后在适当的地方 Init, Update, Release...
main 大概这样

  1. $: << File.expand_path(File.dirname(__FILE__))
  2. require 'RbKK.rb'

  3. begin   
  4.     RM_Input.InitDXInput()
  5.     Font.default_name = (["黑体"])
  6.     Graphics.freeze
  7.     $scene = Scene_Title.new
  8.     while $scene != nil
  9.       $scene.main
  10.     end
  11.     Graphics.transition(20)
  12.     RM_Input.Release()
  13.   rescue Errno::ENOENT
  14.     filename = $!.message.sub("No such file or directory - ", "")
  15.     print("找不到文件 #{filename}。 ")
  16. end
复制代码

然后在Scene的main的loop块中可以替换掉Input.update, 也可以在其上下
  RM_Input.Update(), 具体其他函数可以看RbKK里面
这个什么功能都没有, 就是读取鼠标键盘{/gg}
全键盘的调用, 鼠标移动(包括计算DX3D的鼠标X,Y,Z偏移),
没有那些trigger? 之类的功能判断, 可能以后会添加吧.
等到这些功能好了以后, 应该可以不要使用默认的Input了

最后, 如有360之类的会报告什么 发现一个进程注册键盘 什么的,请放心..  
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!

Lv3.寻梦者

酱油的

梦石
0
星屑
1020
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

2
发表于 2008-6-7 07:27:41 | 只看该作者
trigger? 之類的判斷禾西手上有一個不錯的。整理一下扔出來吧==
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

3
 楼主| 发表于 2008-6-7 07:46:39 | 只看该作者
以下引用禾西于2008-6-6 23:27:41的发言:

trigger? 之類的判斷禾西手上有一個不錯的。整理一下扔出來吧==

那就扔出来吧  我也可以看看,
省得自己用nc的脑袋去想出那些nc的方法
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1020
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

4
发表于 2008-6-7 08:01:38 | 只看该作者
禁止四方嚮鍵盤使用:
  Input.dir4forbid
擊鍵測試:
  Input.click?(key)
  Input.testkey(key)
模擬按下:
  Input.push(key)
取消按下
  Input.delete(key)
擊鍵判斷:
  Input.triggerd?(key)
壓健判斷:
  Input.pressed?(key)
四方嚮:
  Input.dir4
任意鍵按下:
  Input.Anykey




  1. module Input
  2.   #--------------------------------------------------------------------------
  3.   # * Variable Setup
  4.   #--------------------------------------------------------------------------
  5.     @keys = []
  6.     @pressed = []
  7.     Mouse_Left = 1
  8.     Mouse_Right = 2
  9.     Mouse_Middle = 4
  10.     Back= 8
  11.     Tab = 9
  12.     Enter = 13
  13.     Shift = 16
  14.     Ctrl = 17
  15.     Alt = 18
  16.     Esc = 0x1B
  17.     LT = 0x25
  18.     UPs = 0x26
  19.     RT = 0x27
  20.     DN = 0x28
  21.     Space = 32
  22.     Numberkeys = {}
  23.     Numberkeys[0] = 48        # => 0
  24.     Numberkeys[1] = 49        # => 1
  25.     Numberkeys[2] = 50        # => 2
  26.     Numberkeys[3] = 51        # => 3
  27.     Numberkeys[4] = 52        # => 4
  28.     Numberkeys[5] = 53        # => 5
  29.     Numberkeys[6] = 54        # => 6
  30.     Numberkeys[7] = 55        # => 7
  31.     Numberkeys[8] = 56        # => 8
  32.     Numberkeys[9] = 57        # => 9
  33.     Numberpad = {}
  34.     Numberpad[0] = 45
  35.     Numberpad[1] = 35
  36.     Numberpad[2] = 40
  37.     Numberpad[3] = 34
  38.     Numberpad[4] = 37
  39.     Numberpad[5] = 12
  40.     Numberpad[6] = 39
  41.     Numberpad[7] = 36
  42.     Numberpad[8] = 38
  43.     Numberpad[9] = 33
  44.     Letters = {}
  45.     Letters["A"] = 65
  46.     Letters["B"] = 66
  47.     Letters["C"] = 67
  48.     Letters["D"] = 68
  49.     Letters["E"] = 69
  50.     Letters["F"] = 70
  51.     Letters["G"] = 71
  52.     Letters["H"] = 72
  53.     Letters["I"] = 73
  54.     Letters["J"] = 74
  55.     Letters["K"] = 75
  56.     Letters["L"] = 76
  57.     Letters["M"] = 77
  58.     Letters["N"] = 78
  59.     Letters["O"] = 79
  60.     Letters["P"] = 80
  61.     Letters["Q"] = 81
  62.     Letters["R"] = 82
  63.     Letters["S"] = 83
  64.     Letters["T"] = 84
  65.     Letters["U"] = 85
  66.     Letters["V"] = 86
  67.     Letters["W"] = 87
  68.     Letters["X"] = 88
  69.     Letters["Y"] = 89
  70.     Letters["Z"] = 90
  71.    
  72.     Equ={} # Shift Value for num US
  73.     Equ[0]=')'    # FR: à
  74.     Equ[1]='!'    # FR: &
  75.     Equ[2]='@'    # FR: é
  76.     Equ[3]='#'    # FR: "
  77.     Equ[4]='$'    # FR: '
  78.     Equ[5]='%'    # FR: (
  79.     Equ[6]='^'    # FR: -
  80.     Equ[7]='&'    # FR: è
  81.     Equ[8]='*'    # FR: _
  82.     Equ[9]='('    # FR: &ccedil;
  83.    
  84.     Carac = {}
  85.     Carac[0] = 48        # => 0
  86.     Carac[1] = 49        # => 1
  87.     Carac[2] = 50        # => 2
  88.     Carac[3] = 51        # => 3
  89.     Carac[4] = 52        # => 4
  90.     Carac[5] = 53        # => 5
  91.     Carac[6] = 54        # => 6
  92.     Carac[7] = 55        # => 7
  93.     Carac[8] = 56        # => 8
  94.     Carac[9] = 57        # => 9
  95.     Carac["A"] = 65
  96.     Carac["B"] = 66
  97.     Carac["C"] = 67
  98.     Carac["D"] = 68
  99.     Carac["E"] = 69
  100.     Carac["F"] = 70
  101.     Carac["G"] = 71
  102.     Carac["H"] = 72
  103.     Carac["I"] = 73
  104.     Carac["J"] = 74
  105.     Carac["K"] = 75
  106.     Carac["L"] = 76
  107.     Carac["M"] = 77
  108.     Carac["N"] = 78
  109.     Carac["O"] = 79
  110.     Carac["P"] = 80
  111.     Carac["Q"] = 81
  112.     Carac["R"] = 82
  113.     Carac["S"] = 83
  114.     Carac["T"] = 84
  115.     Carac["U"] = 85
  116.     Carac["V"] = 86
  117.     Carac["W"] = 87
  118.     Carac["X"] = 88
  119.     Carac["Y"] = 89
  120.     Carac["Z"] = 90
  121.    
  122.     Fkeys = {}
  123.     Fkeys[1] = 112
  124.     Fkeys[2] = 113
  125.     Fkeys[3] = 114
  126.     Fkeys[4] = 115
  127.     Fkeys[5] = 116
  128.     Fkeys[6] = 117
  129.     Fkeys[7] = 118
  130.     Fkeys[8] = 119
  131.     Fkeys[9] = 120
  132.     Fkeys[10] = 121
  133.     Fkeys[11] = 122
  134.     Fkeys[12] = 123
  135.     Collon = 186        # => \ |
  136.     Equal = 187         # => = +
  137.     Comma = 188         # => , <
  138.     Underscore = 189    # => - _
  139.     Dot = 190           # => . >
  140.     Backslash = 191     # => / ?
  141.     Lb = 219
  142.     Rb = 221
  143.     Quote = 222         # => '"
  144.    
  145.     Lb = 219            # US: [{  FR: )°
  146.     Rb = 221            # US: ]}  FR: ^¨
  147.     E2 = 226            #         FR: <>
  148.     DC = 220            # US: \|  FR: *&micro;
  149.     DF = 223            #         FR: !§
  150.     C0 = 192            # US: `~  FR: ù%
  151.   #--------------------------------------------------------------------------
  152.   # * Win32API Call
  153.   #--------------------------------------------------------------------------
  154.    
  155.     State = Win32API.new('user32','GetKeyState',['i'],'i')
  156.     Key = Win32API.new('user32','GetAsyncKeyState',['i'],'i')
  157. #-------------------------------------------------------------------------------
  158.     USED_KEYS = [Mouse_Left, Mouse_Right, Mouse_Middle]
  159. #-------------------------------------------------------------------------------
  160.   module_function
  161.     #--------------------------------------------------------------------------
  162.     def Input.dir4forbid=(val)
  163.       @dir4=val
  164.     end
  165.     #--------------------------------------------------------------------------
  166.     def Input.click?(key)
  167.       Key.call(key) & 0x01  != 0
  168.     end
  169.     #--------------------------------------------------------------------------  
  170.     def Input.getstate(key)
  171.       return true unless State.call(key).between?(0, 1)
  172.       return false
  173.     end
  174.     #--------------------------------------------------------------------------
  175.     def Input.testkey(key)
  176.       Key.call(key) & 0x01 != 0
  177.     end
  178.     #--------------------------------------------------------------------------
  179.     def Input.push(key)
  180.       @keys.push(key)
  181.     end
  182.     #--------------------------------------------------------------------------
  183.     def Input.delete(key)
  184.       @keys.delete(key)
  185.     end
  186.     #--------------------------------------------------------------------------
  187.     # Input 的更新,擊鍵的截取
  188.     #--------------------------------------------------------------------------
  189.     def Input.update
  190.       @keys = []
  191.       @keys.push(Input::Mouse_Left) if Input.testkey(Input::Mouse_Left)
  192.       @keys.push(Input::Mouse_Right) if Input.testkey(Input::Mouse_Right)
  193.       @keys.push(Input::Back) if Input.testkey(Input::Back)
  194.       @keys.push(Input::Tab) if Input.testkey(Input::Tab)
  195.       @keys.push(Input::Enter) if Input.testkey(Input::Enter)
  196.       @keys.push(Input::Shift) if Input.testkey(Input::Shift)
  197.       @keys.push(Input::Ctrl) if Input.testkey(Input::Ctrl)
  198.       @keys.push(Input::Alt) if Input.testkey(Input::Alt)
  199.       @keys.push(Input::Esc) if Input.testkey(Input::Esc)
  200.       for key in Input::Letters.values
  201.         @keys.push(key) if Input.testkey(key)
  202.       end
  203.       for key in Input::Numberkeys.values
  204.         @keys.push(key) if Input.testkey(key)
  205.       end
  206.       for key in Input::Numberpad.values
  207.         @keys.push(key) if Input.testkey(key)
  208.       end
  209.       for key in Input::Fkeys.values
  210.         @keys.push(key) if Input.testkey(key)
  211.       end
  212.       @keys.push(Input::Collon) if Input.testkey(Input::Collon)
  213.       @keys.push(Input::Equal) if Input.testkey(Input::Equal)
  214.       @keys.push(Input::Comma) if Input.testkey(Input::Comma)
  215.       @keys.push(Input::Underscore) if Input.testkey(Input::Underscore)
  216.       @keys.push(Input::Dot) if Input.testkey(Input::Dot)
  217.       @keys.push(Input::Backslash) if Input.testkey(Input::Backslash)
  218.       @keys.push(Input::Lb) if Input.testkey(Input::Lb)
  219.       @keys.push(Input::Rb) if Input.testkey(Input::Rb)
  220.       @keys.push(Input::Quote) if Input.testkey(Input::Quote)
  221.       @keys.push(Input::Space) if Input.testkey(Input::Space)
  222.       @keys.push(Input::LT) if Input.testkey(Input::LT)
  223.       @keys.push(Input::UPs) if Input.testkey(Input::UPs)
  224.       @keys.push(Input::RT) if Input.testkey(Input::RT)
  225.       @keys.push(Input::DN) if Input.testkey(Input::DN)
  226.       @pressed = []
  227.       @pressed.push(Input::Space) if Input.getstate(Input::Space)
  228.       @pressed.push(Input::Mouse_Left) if Input.getstate(Input::Mouse_Left)
  229.       @pressed.push(Input::Mouse_Right) if Input.getstate(Input::Mouse_Right)
  230.       @pressed.push(Input::Back) if Input.getstate(Input::Back)
  231.       @pressed.push(Input::Tab) if Input.getstate(Input::Tab)
  232.       @pressed.push(Input::Enter) if Input.getstate(Input::Enter)
  233.       @pressed.push(Input::Shift) if Input.getstate(Input::Shift)
  234.       @pressed.push(Input::Ctrl) if Input.getstate(Input::Ctrl)
  235.       @pressed.push(Input::Alt) if Input.getstate(Input::Alt)
  236.       @pressed.push(Input::Esc) if Input.getstate(Input::Esc)
  237.       @pressed.push(Input::LT) if Input.getstate(Input::LT)
  238.       @pressed.push(Input::UPs) if Input.getstate(Input::UPs)
  239.       @pressed.push(Input::RT) if Input.getstate(Input::RT)
  240.       @pressed.push(Input::DN) if Input.getstate(Input::DN)
  241.       for key in Input::Numberkeys.values
  242.         @pressed.push(key) if Input.getstate(key)
  243.       end
  244.       for key in Input::Numberpad.values
  245.         @pressed.push(key) if Input.getstate(key)
  246.       end
  247.       for key in Input::Letters.values
  248.         @pressed.push(key) if Input.getstate(key)
  249.       end
  250.       for key in Input::Fkeys.values
  251.         @pressed.push(key) if Input.getstate(key)
  252.       end
  253.       @pressed.push(Input::Collon) if Input.getstate(Input::Collon)
  254.       @pressed.push(Input::Equal) if Input.getstate(Input::Equal)
  255.       @pressed.push(Input::Comma) if Input.getstate(Input::Comma)
  256.       @pressed.push(Input::Underscore) if Input.getstate(Input::Underscore)
  257.       @pressed.push(Input::Dot) if Input.getstate(Input::Dot)
  258.       @pressed.push(Input::Backslash) if Input.getstate(Input::Backslash)
  259.       @pressed.push(Input::Lb) if Input.getstate(Input::Lb)
  260.       @pressed.push(Input::Rb) if Input.getstate(Input::Rb)
  261.       @pressed.push(Input::Quote) if Input.getstate(Input::Quote)  
  262.     end
  263.     #--------------------------------------------------------------------------
  264.     def Input.triggerd?(key)
  265.     #--------------------------------------------------------------------------
  266.     if @dir4
  267.       case key
  268.       when Input::DOWN, Input::DN
  269.         @keys.delete(Input::DOWN)
  270.         @keys.delete(Input::DN)
  271.       when Input::UP, Input::UPs
  272.         @keys.delete(Input::UP)
  273.         @keys.delete(Input::UPs)
  274.       when Input::LEFT,Input::LT
  275.         @keys.delete(Input::LEFT)
  276.         @keys.delete(Input::LT)
  277.       when Input::RIGHT,Input::RT
  278.         @keys.delete(Input::RIGHT)
  279.         @keys.delete(Input::RT)
  280.       end
  281.     end
  282.     #--------------------------------------------------------------------------
  283.       return true if @keys.include?(key)
  284.       return false
  285.     end
  286.     #--------------------------------------------------------------------------
  287.     def Input.pressed?(key)
  288.       return true if @pressed.include?(key)
  289.       return false
  290.     end
  291.   #--------------------------------------------------------------------------
  292.   # * 4 Diraction
  293.   #--------------------------------------------------------------------------
  294.   def Input.dir4
  295.     return 2 if Input.pressed?(Input::DN)
  296.     return 4 if Input.pressed?(Input::LT)
  297.     return 6 if Input.pressed?(Input::RT)
  298.     return 8 if Input.pressed?(Input::UPs)
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # * Trigger (key)
  302.   #--------------------------------------------------------------------------
  303.   def trigger?(key)
  304.     keys = []
  305.     case key
  306.     when Input::DOWN
  307.       keys.push(Input::DN)
  308.     when Input::UP
  309.       keys.push(Input::UPs)
  310.     when Input::LEFT
  311.       keys.push(Input::LT)
  312.     when Input::RIGHT
  313.       keys.push(Input::RT)
  314.     when Input::C
  315.       keys.push(Input::Enter)
  316.       keys.push(Input::Space)
  317.     when Input::B
  318.       keys.push(Input::Esc)
  319.       keys.push(Input::Mouse_Right)
  320.     when Input::X
  321.       keys.push(Input::Letters["A"])
  322.     when Input::L
  323.       keys.push(Input::Letters["Q"])
  324.     when Input::R
  325.       keys.push(Input::Letters["W"])
  326.     when Input::Y
  327.       keys.push(Input::Letters["R"])
  328.     when Input::F5
  329.       keys.push(Input::Fkeys[5])
  330.     when Input::F6
  331.       keys.push(Input::Fkeys[6])
  332.     when Input::F7
  333.       keys.push(Input::Fkeys[7])
  334.     when Input::F8
  335.       keys.push(Input::Fkeys[8])
  336.     when Input::F9
  337.       keys.push(Input::Fkeys[9])
  338.     when Input::SHIFT
  339.       keys.push(Input::Shift)
  340.     when Input::CTRL
  341.       keys.push(Input::Ctrl)
  342.     when Input::ALT
  343.       keys.push(Input::Alt)
  344.     else
  345.       keys.push(key)
  346.     end
  347.     for k in keys
  348.      return true if Input.triggerd?(k)
  349.    end
  350.    return false
  351. end

  352.   #--------------------------------------------------------------------------
  353.   # * Mouse Triggered ? (key)
  354.   #--------------------------------------------------------------------------
  355.   def trigger(key)
  356.     return @used_i.include?(key)
  357.   end
  358.   #--------------------------------------------------------------------------
  359.   # * Mouse Pressed ? (key)
  360.   #--------------------------------------------------------------------------
  361.   def pressed(key)
  362.     return true unless Win32API.new("user32","GetKeyState",['i'],'i').call(key).between?(0, 1)
  363.     return false
  364.   end
  365.   
  366.   #--------------------------------------------------------------------------
  367.   # * Repeat (key)
  368.   #--------------------------------------------------------------------------
  369.   def repeat?(key)
  370.     keys = []
  371.     case key
  372.     when Input::Mouse_Left
  373.       keys.push(Input::Mouse_Left)
  374.     when Input::DOWN
  375.       keys.push(Input::DN)
  376.     when Input::UP
  377.       keys.push(Input::UPs)
  378.     when Input::LEFT
  379.       keys.push(Input::LT)
  380.     when Input::RIGHT
  381.       keys.push(Input::RT)
  382.     when Input::C
  383.       keys.push(Input::Enter)
  384.       keys.push(Input::C)
  385.     when Input::B
  386.       keys.push(Input::Esc)
  387.       keys.push(Input::Numberpad[0])
  388.     when Input::X
  389.       keys.push(Input::Letters["A"])
  390.     when Input::L
  391.       keys.push(Input::Letters["Q"])
  392.     when Input::R
  393.       keys.push(Input::Letters["W"])
  394.     when Input::Y
  395.       keys.push(Input::Letters["R"])
  396.     when Input::F5
  397.       keys.push(Input::Fkeys[5])
  398.     when Input::F6
  399.       keys.push(Input::Fkeys[6])
  400.     when Input::F7
  401.       keys.push(Input::Fkeys[7])
  402.     when Input::F8
  403.       keys.push(Input::Fkeys[8])
  404.     when Input::F9
  405.       keys.push(Input::Fkeys[9])
  406.     when Input::SHIFT
  407.       keys.push(Input::Shift)
  408.     when Input::CTRL
  409.       keys.push(Input::Ctrl)
  410.     when Input::ALT
  411.       keys.push(Input::Alt)
  412.     else
  413.       keys.push(key)
  414.     end
  415.     for k in keys
  416.      if Input.triggerd?(k)
  417.        return true
  418.      end
  419.    end
  420.    return false
  421.   end     
  422.   #--------------------------------------------------------------------------
  423.   # * Check (key)
  424.   #--------------------------------------------------------------------------
  425.   def check(key)
  426.     Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(key) & 0x01 != 0  # key 0
  427.   end
  428.   #--------------------------------------------------------------------------
  429.   # * Anykey pressed?  ( A or B or C or Down or Up or Right or Left )
  430.   #--------------------------------------------------------------------------
  431.   def Input.Anykey
  432.     return true if @keys != []
  433.     return false
  434.   end
  435. end

  436. module Keys
  437. MOUSE_PRIMARY = Input::Mouse_Left
  438. MOUSE_SECONDARY = Input::Mouse_Right

  439.   def Keys.name?(num)
  440.     return "MOUSE PRIMARY" if num==1
  441.     return "MOUSE SECONDARY" if num==2
  442.     return "MOUSE MIDDLE" if num==4
  443.     return "MOUSE 4TH" if num==5
  444.     return "MOUSE 5TH" if num==6
  445.     return "BACKSPACE" if num==8
  446.     return "TAB" if num==9
  447.     return "RETURN" if num==13
  448.     return "SHIFT" if num==16
  449.     return "CTLR" if num==17
  450.     return "ALT" if num==18
  451.     return "CAPS LOCK" if num==20
  452.     return "ESCAPE" if num==27
  453.     return "SPACE" if num==32
  454.     return "PGUP" if num==33
  455.     return "PGDN" if num==34
  456.     return "END" if num==35
  457.     return "HOME" if num==36
  458.     return "LEFT" if num==37
  459.     return "UP" if num==38
  460.     return "RIGHT" if num==39
  461.     return "DOWN" if num==40
  462.     return "SNAPSHOT" if num==44
  463.     return "INSERT" if num==45
  464.     return "DELETE" if num==46
  465.     return "0" if num==48
  466.     return "1" if num==49
  467.     return "2" if num==50
  468.     return "3" if num==51
  469.     return "4" if num==52
  470.     return "5" if num==53
  471.     return "6" if num==54
  472.     return "7" if num==55
  473.     return "8" if num==56
  474.     return "9" if num==57
  475.     return "A" if num==65
  476.     return "B" if num==66
  477.     return "C" if num==67
  478.     return "D" if num==68
  479.     return "E" if num==69
  480.     return "F" if num==70
  481.     return "G" if num==71
  482.     return "H" if num==72
  483.     return "I" if num==73
  484.     return "J" if num==74
  485.     return "K" if num==75
  486.     return "L" if num==76
  487.     return "M" if num==77
  488.     return "N" if num==78
  489.     return "O" if num==79
  490.     return "P" if num==80
  491.     return "Q" if num==81
  492.     return "R" if num==82
  493.     return "S" if num==83
  494.     return "T" if num==84
  495.     return "U" if num==85
  496.     return "V" if num==86
  497.     return "W" if num==87
  498.     return "X" if num==88
  499.     return "Y" if num==89
  500.     return "Z" if num==90
  501.     return "LWIN" if num==91
  502.     return "RWIN" if num==92
  503.     return "APPS" if num==93
  504.     return "0" if num==96
  505.     return "1" if num==97
  506.     return "2" if num==98
  507.     return "3" if num==99
  508.     return "4" if num==100
  509.     return "5" if num==101
  510.     return "6" if num==102
  511.     return "7" if num==103
  512.     return "8" if num==104
  513.     return "9" if num==105
  514.     return "*" if num==106
  515.     return "+" if num==107
  516.     return "-" if num==109
  517.     return "." if num==110
  518.     return "/" if num==111
  519.     return "F1" if num==112
  520.     return "F2" if num==113
  521.     return "F3" if num==114
  522.     return "F4" if num==115
  523.     return "F5" if num==116
  524.     return "F6" if num==117
  525.     return "F7" if num==118
  526.     return "F8" if num==119
  527.     return "F9" if num==120
  528.     return "F10" if num==121
  529.     return "F11" if num==122
  530.     return "F12" if num==123
  531.     return "NUM LOCK" if num==144
  532.     return "SCROLL LOCK" if num==145
  533.     return "LEFT SHIFT" if num==160
  534.     return "RIGHT SHIFT" if num==161
  535.     return "LEFT CTRL" if num==162
  536.     return "RIGHT CTRL" if num==163
  537.     return "LEFT ALT" if num==164
  538.     return "RIGHT ALT" if num==165
  539.     return ";" if num==186
  540.     return "=" if num==187
  541.     return "," if num==188
  542.     return "_" if num==189
  543.     return "." if num==190
  544.     return "/" if num==191
  545.     return "`" if num==192
  546.     return "[" if num==219
  547.     return " \\ " if num==220
  548.     return "]" if num==221
  549.     return "'" if num==222
  550.     return "??? - " + "#{num}"
  551.   end
  552.   
  553. end
复制代码

看了看好像跟link的要求不太符合{/gg}
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

5
 楼主| 发表于 2008-6-7 08:14:35 | 只看该作者
谢谢ls
写的好长啊
先拿回去  明天再说
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

6
发表于 2008-6-7 16:28:10 | 只看该作者

屏蔽INPUT只要不UPDATE
屏蔽四方位走更简单

另外,我曾经也想写一个RUBY调用自己写的DLL(API方法)
不知道为什么不能编译
C++和VB各一个
不过我不是学C的,难免有错。
所以LZ自己看吧~~

  1. 'VB版本(VB数据类型与RUBY区别大大地)
  2. Private Type POINTAPI
  3. x As Long
  4. Y As Long
  5. End Type
  6. Dim p As POINTAPI
  7. Dim l As Long
  8. Dim hd As Long
  9. Dim KeyTepy As Integer
  10. Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  11. Private Declare Function ScreenToClient Lib "user32" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long
  12. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  13. Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
  14. Private Function Get_Pos_X() As Long
  15. If p.x < 0 Then
  16.   p.x = 0
  17. End If
  18. If p.x > 544 Then
  19.   p.x = 544
  20. End If
  21. Get_Pos_X = p.x
  22. End Function
  23. Private Function Get_Pos_Y() As Long
  24. If p.Y < 0 Then
  25.   p.Y = 0
  26. End If
  27. If p.Y > 416 Then
  28.   p.Y = 416
  29. End If
  30. Get_Pos_Y = p.Y
  31. End Function
  32. Private Function Get_Left() As Integer
  33.   Get_Left = 0
  34.   If KeyTepy = 1 Then
  35.     Get_Left = 1
  36.   End If
  37. End Function
  38. Private Function Get_Right() As Integer
  39.   Get_Right = 0
  40.   If KeyTepy = 2 Then
  41.     Get_Right = 1
  42.   End If
  43. End Function
  44. Private Function Updata_Mouse() As Long
  45. If Mouse_Open = True Then
  46.    Call GetCursorPos(p)
  47.    l = ScreenToClient(hd, p)
  48.    Dim x     As Long
  49.    x = GetAsyncKeyState(1)       '左键
  50.    KeyTepy = 0
  51.    If x = -32767 Then
  52.      KeyTepy = 1
  53.    End If
  54.    
  55.    x = GetAsyncKeyState(2)       '右键
  56.    If x = -32767 Then
  57.      KeyTepy = 2
  58.    End If
  59.    Updata_Mouse = 0
  60. Else
  61.    Updata_Mouse = 1
  62. End If
  63. End Function
  64. Sub Mouse_Close()
  65.    ShowCursor (1)
  66.    l = ""
  67.    hd = ""
  68.    KeyTepy = ""
  69.     Mouse_Open = False
  70. End Sub
  71. Private Function Mouse_Start(hWnd As Long) As Long
  72.    ShowCursor (0)
  73.    hd = hWnd
  74.    Mouse_Open = True
  75.    Mouse_Start = 0
  76. End Function

复制代码


  1. // C++版本~~
  2. // Mouse Dynamic Link Library.cpp : Defines the entry point for the DLL application.
  3. #include "stdafx.h"
  4. #include <"stdio.h">
  5. #include <"windows.h">
  6. // API
  7. [DllImport("user32.dll")]
  8. public static extern short GetKeyState(int nVirtKey);
  9. public const int VK_LBUTTON = 1;
  10. public const int VK_RBUTTON = 2;

  11. int x,y;
  12. long l;
  13. long hd;
  14. long KeyTepy;
  15. bool Mouse_Open;
  16. // API
  17. CPoint point;
  18. BOOL APIENTRY DllMain( HANDLE hModule,
  19.                        DWORD  ul_reason_for_call,
  20.                        LPVOID lpReserved
  21.                                          )
  22. {
  23.     return TRUE;
  24. }

  25. extern long start(long hWnd)
  26. {
  27.         Mouse_Open = true;
  28.         hd = hWnd;
  29. }

  30. extern long __stdcall Get_Tepy()
  31. {
  32.         return KeyTepy;
  33. }

  34. extern long __stdcall Get_Pos_X()
  35. {
  36. return x;
  37. }

  38. extern long __stdcall Get_Pos_Y()
  39. {
  40. return x;
  41. }

  42. extern long __stdcall Mouse_Close()
  43. {
  44.         Mouse_Open = false;
  45. }

  46. extern int Updata_Mouse()
  47. {
  48.         KeyTepy = 0;
  49.         GetCursorPos(&point);
  50.         ScreenToClient(hd,&print);
  51.         x   =   point.x;
  52.     y   =   point.y;
  53.         if (GetKeyState(VK_LBUTTON) & 0x80) == 0x80
  54.         {
  55.                 KeyTepy = 1;
  56.         };       
  57.         if (GetKeyState(VK_RBUTTON) & 0x80) == 0x80
  58.         {
  59.                 KeyTepy = 2;
  60.         };
  61.     if (((GetKeyState(VK_LBUTTON) & 0x80) == 0x80) &&
  62.        ((GetKeyState(VK_RBUTTON) & 0x80) == 0x80))
  63.         {
  64.         KeyTepy = 3;
  65.         };

  66. }
复制代码
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-12-16
帖子
102
7
发表于 2008-6-7 21:02:29 | 只看该作者
标题党的说。。。
[fly]囧囧囧囧囧囧囧囧囧囧[/fly]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

8
 楼主| 发表于 2008-6-8 06:31:50 | 只看该作者
以下引用yangff于2008-6-7 8:28:10的发言:

我写的不是你那样的说....{/gg}


orz  干才在家里下了RM 发现不能用这个dll{/gg}
可能我发的是debug版本的, 哪位同学帮忙编译一下? PM 我
现在不再学校  什么都没有 = =
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 17:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表