查看: 5524|回复: 19

rm实现输入信息筐

  [复制链接]
梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
回帖
1175
发表于 2007-7-7 21:49:05 | 显示全部楼层 |阅读模式

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

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

×
   如果rm有输入信息筐该多好!如果rm有控件改多好!可惜,自己学艺不精,连分析别人写的脚本都很困难,就更别说创新了。
  “山穷水尽疑无路,柳暗花明又一村”在这苦劳之际,api出现了!说简单点, api的她可以连接任何在window上的任何程序.rm没有输入筐,但其他语言有啊,比如vb.
   
我要实现的功能是:用输入信息筐来写主角的名字

1,用vb做个输入筐
  这个很基础了,注意窗体的大小和颜色,以及把form的字样修改成姓名,设置一个确定按钮.总之就是要把
vb的那个窗体,尽量做得合理,比如禁止移动,禁止放大缩小等.

2,写命令按钮的程序
  Open "c:\aaa.txt" For Output As #1
  Print #1, text1.text            
  Close #1
  unload me
你不是输入了名字吗?以上的程序是将名字保存在记事本中(路径设置在游戏目录下)

3,用ruby连接这个程序
require 'Win32API'
sizz = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
sizz.call(0, 'open', 'D:\程序.exe',0, 0, 1)
以上是让ruby调用这个vb程序

于是,一个输入名字的筐子就出来了,输入名字,确定,信息保存到记事本

然后用ruby读取
   f = File.open("aaa.txt")
   s = f.read
于是ruby中的变量s,就读取了vb中的变量text.text.最后将这个s变量,赋予给角色的姓名.xxx.name这个变量.
梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
回帖
1175
发表于 2007-7-7 21:49:05 | 显示全部楼层 |阅读模式

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

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

×
   如果rm有输入信息筐该多好!如果rm有控件改多好!可惜,自己学艺不精,连分析别人写的脚本都很困难,就更别说创新了。
  “山穷水尽疑无路,柳暗花明又一村”在这苦劳之际,api出现了!说简单点, api的她可以连接任何在window上的任何程序.rm没有输入筐,但其他语言有啊,比如vb.
   
我要实现的功能是:用输入信息筐来写主角的名字

1,用vb做个输入筐
  这个很基础了,注意窗体的大小和颜色,以及把form的字样修改成姓名,设置一个确定按钮.总之就是要把
vb的那个窗体,尽量做得合理,比如禁止移动,禁止放大缩小等.

2,写命令按钮的程序
  Open "c:\aaa.txt" For Output As #1
  Print #1, text1.text            
  Close #1
  unload me
你不是输入了名字吗?以上的程序是将名字保存在记事本中(路径设置在游戏目录下)

3,用ruby连接这个程序
require 'Win32API'
sizz = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
sizz.call(0, 'open', 'D:\程序.exe',0, 0, 1)
以上是让ruby调用这个vb程序

于是,一个输入名字的筐子就出来了,输入名字,确定,信息保存到记事本

然后用ruby读取
   f = File.open("aaa.txt")
   s = f.read
于是ruby中的变量s,就读取了vb中的变量text.text.最后将这个s变量,赋予给角色的姓名.xxx.name这个变量.
梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2007-7-7 22:19:24 | 显示全部楼层
这个思路确实是比较独特。。。。{/dy}变相的支持输入法了……
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
1
星屑
916
在线时间
101 小时
注册时间
2006-3-27
回帖
1019
发表于 2007-7-7 22:43:49 | 显示全部楼层
算了,自我屏蔽,我觉得我在犯傻
回复

使用道具 举报

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
回帖
1175
 楼主| 发表于 2007-7-8 02:17:50 | 显示全部楼层
   问题就在于,不能直接将vb中的变量传给ruby,必须分两步:首先要保存记事本,然后用ruby调用,虽然可以用过度性的语言来圆滑这种不合理的地方,但还是很别扭.
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2007-7-8 03:36:02 | 显示全部楼层
以下引用sizz123于2007-7-7 18:17:50的发言:

  问题就在于,不能直接将vb中的变量传给ruby,必须分两步:首先要保存记事本,然后用ruby调用,虽然可以用过度性的语言来圆滑这种不合理的地方,但还是很别扭.

可以再研究研究,没准儿有这个方法呢{/hx}
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
回帖
1175
 楼主| 发表于 2007-7-8 19:29:05 | 显示全部楼层
rm--记事本---vb,可以将rm的句柄传递给vb.虽然还是和"vb--记事本---rm"一样分两步
(首先将信息保持txt,然后用vb调用),但是vb调用的时候,可以很隐蔽,可以在按下确定的时候调用这个句柄函数.
   用v记录rm的句柄,首先是为了vb将游戏窗口激活,然后看能不能对这个rm窗体传输变量.
  
回复

使用道具 举报

Dancer-

梦石
0
星屑
110
在线时间
78 小时
注册时间
2006-5-15
回帖
3204
发表于 2007-7-9 05:21:40 | 显示全部楼层
发布完毕,
http://rpg.blue/web/htm/news770.htm
VIP 2
            by 叶舞枫
小真·爱舞代发。
一个机缘巧合后,被改变了人生的第八年。
养着两只猫,可是我对猫过敏。
为了那终将到来的一天。
回复

使用道具 举报

Dancer-

梦石
0
星屑
55
在线时间
76 小时
注册时间
2006-11-9
回帖
3442

开拓者贵宾

发表于 2007-7-9 06:03:02 | 显示全部楼层
自蔽..
回复

使用道具 举报

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
回帖
1175
 楼主| 发表于 2007-7-9 19:07:38 | 显示全部楼层
现在要解决的问题是:"当vb程序按下确定后,rm能接受vb的变量."

一,我们可以通过GetActiveWindow来获得rm的窗体句柄
require 'Win32API'
rm_hwnd = Win32API.new('user32.dll','GetActiveWindow"',nil,'l')
rm_hwnd.call
那么这个rm_hwnd就是窗体句柄,然后把数据传给记事本
f = open("rm句柄.txt","w")
f.write("f = open("rm句柄.txt","w")
f.close
调用vb程序,执行变量输入后,保存记事本----顶楼的方法
然后当vb按下确定后,从"rm句柄.txt"中获得rm句柄:这样做的目的是在退出vb程序后将rm窗口激活(有时候很容易弹出个网页打扰)
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部