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

Project1

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

[08.09.18更新]RM托盘程序V1.04(更加灵活的设置)

 关闭 [复制链接]

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

跳转到指定楼层
1
发表于 2007-7-13 21:46:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
咳咳。。。RM 托盘程序。。。= = 以前ms很多人想要这个东西``{/gg}{/gg}

不介绍了

1.04最新版下载
更新全RGSS设置,包括各种信息,处理,自定义选项等。使用说明参考注释。
  1. unless defined? RM_Tray
  2. #==========================================================================
  3. # ■ RM_Tray v1.04
  4. #--------------------------------------------------------------------------
  5. #  RM窗口托盘模块。
  6. #==========================================================================
  7. module RM_Tray

  8.   #--------------------------------------------------------------------------
  9.   # ● 定义常量
  10.   #--------------------------------------------------------------------------
  11.   NIIF_INFO       = 0x00000001  # 气球普通提示
  12.   NIIF_WARNING    = 0x00000002  # 气球警告提示
  13.   NIIF_ERROR      = 0x00000003  # 气球错误提示
  14.   
  15.   DEFAULT_TIP       = "RM Tray is Running! - -bb" # 鼠标经过托盘时的提示信息
  16.   DEFALUT_INFO      = "RM 游戏开始运行 - -bbb !" # 游戏开始的时候提示信息内容
  17.   DEFAULT_INFOTITLE = "Hi"                        # 游戏开始的时候提示信息标题
  18.   
  19.   # PS: 不提示,把信息设置为 nil 即可。
  20.   
  21.   #--------------------------------------------------------------------------
  22.   # ● API声明
  23.   #--------------------------------------------------------------------------
  24.   ADD_TRAY        = Win32API.new("RMTray","_add_tray","ppp","v")
  25.   MODIFY_TIP      = Win32API.new("RMTray","_modify_tip","p","v")
  26.   SUPPORT_BALLOON = Win32API.new("RMTray","_support_balloon","v","i")
  27.   SHOW_BALLOON    = Win32API.new("RMTray","_show_balloon","ppil","v")
  28.   REMOVE_TRAY     = Win32API.new("RMTray","_remove_tray","v","v")
  29.   API_REGISTER    = Win32API.new("RMTray","_register", "lipp", "i")
  30.   
  31.   API_RESTORE     = Win32API.new("RMTray","_restore_window","v","v")
  32.   
  33.   #--------------------------------------------------------------------------
  34.   # ● 功能函数01: 查找窗口
  35.   #--------------------------------------------------------------------------
  36.   def self.findWindow
  37.     Win32API.new("user32","FindWindow","pp","i").call("RGSS Player",readIni)
  38.   end
  39.   
  40.   #--------------------------------------------------------------------------
  41.   # ● 功能函数02:读取Ini文件
  42.   #--------------------------------------------------------------------------
  43.   def self.readIni(item = "Title")
  44.     buf = 0.chr * 256
  45.     gpps = Win32API.new("kernel32","GetPrivateProfileString","pppplp","l")
  46.     gpps.call("Game",item,"",buf,256,"./Game.ini")
  47.     buf.delete!("\0")
  48.     return buf
  49.   end
  50.   
  51.   #--------------------------------------------------------------------------
  52.   # ● 定义常量:窗口句柄
  53.   #--------------------------------------------------------------------------
  54.   HWND = findWindow
  55.   
  56.   #--------------------------------------------------------------------------
  57.   # ● 特殊方法:窗口转向后台时的提示信息
  58.   #--------------------------------------------------------------------------
  59.   def self.hide_window_info
  60.     self.show_balloon("提示", "最小化到后台运行", 10000, NIIF_INFO)
  61.   end
  62.   
  63.   #--------------------------------------------------------------------------
  64.   # ● 托盘操作方法:加载托盘
  65.   #--------------------------------------------------------------------------
  66.   def self.add_tray(tip = DEFAULT_TIP, info = DEFALUT_INFO, title = DEFAULT_INFOTITLE)
  67.     ADD_TRAY.call tip, info, title
  68.   end
  69.   
  70.   #--------------------------------------------------------------------------
  71.   # ● 托盘操作方法:修改鼠标经过的提示信息
  72.   #--------------------------------------------------------------------------
  73.   def self.modify_tip(str)
  74.     MODIFY_TIP.call(str)
  75.   end
  76.   
  77.   #--------------------------------------------------------------------------
  78.   # ● 托盘操作方法:检查是否支持气球提示
  79.   #--------------------------------------------------------------------------
  80.   def self.support_balloon?
  81.     return SUPPORT_BALLOON.call != 0
  82.   end
  83.   
  84.   #--------------------------------------------------------------------------
  85.   # ● 托盘操作方法:显示气球提示
  86.   #--------------------------------------------------------------------------
  87.   def self.show_balloon(title,str,timeout = 10000,flags = NIIF_INFO)
  88.     SHOW_BALLOON.call(title,str,timeout,flags) if support_balloon?
  89.   end
  90.   
  91.   #--------------------------------------------------------------------------
  92.   # ● 托盘操作方法:移除托盘
  93.   #--------------------------------------------------------------------------
  94.   def self.remove_tray
  95.     REMOVE_TRAY.call
  96.   end
  97.   
  98.   #--------------------------------------------------------------------------
  99.   # ● 回调方法:RM_Tray.restore
  100.   #--------------------------------------------------------------------------
  101.   def self.restore
  102.     p "restore"
  103.     API_RESTORE.call
  104.   end
  105.   
  106.   #--------------------------------------------------------------------------
  107.   # ● 回调方法:RM_Tray.about
  108.   #--------------------------------------------------------------------------
  109.   def self.about
  110.     p "about"
  111.     Win32API.new("user32", "MessageBox", "lppi", "i").call      0,
  112.       "RMTray V1.04 ! - -bb from 66RPG!",
  113.       "hi",
  114.       0x00000040
  115.   end
  116.   
  117.   #--------------------------------------------------------------------------
  118.   # ● 回调方法:RM_Tray.gotobbs
  119.   #--------------------------------------------------------------------------
  120.   def self.gotobbs
  121.     p "gotobbs"
  122.     Win32API.new("shell32", "ShellExecute", "lppppi", "l").call      0, nil, "http://rpg.blue/bbs", nil, nil, 1
  123.   end
  124.   
  125.   #--------------------------------------------------------------------------
  126.   # ● 回调方法:RM_Tray.exit
  127.   #--------------------------------------------------------------------------
  128.   def self.exit
  129.     p "exit"
  130.     Win32API.new("user32","DestroyWindow", "l", "i").call HWND
  131.   end
  132.   
  133. =begin

  134.   关于 RM_Tray.register 方法。
  135.   
  136.       该方法用于给托盘的弹出菜单注册菜单项,每一项为包含4个元素的数组,
  137.   其中第一个参数用于指定菜单项的风格;
  138.      MF_STRING    - 字符串
  139.      MF_GRAYED    - 灰色(无效)化
  140.      MF_SEPARATOR - 分割线
  141.   第二个参数用于指定一个菜单项的ID号;
  142.   第三个参数用于指定对应的字符串,如果MF_SEPARATOR的情况传递nil;
  143.   第四个参数指定一个“可执行”的字符串。
  144.   
  145. =end

  146.   #--------------------------------------------------------------------------
  147.   # ● 设置菜单项状态用API:MF_ENABLED、MF_DISABLED、MF_GRAYED 三个状态
  148.   #--------------------------------------------------------------------------
  149.   API_SETITEMSTATE  = Win32API.new("RMTray", "_set_item_state", "ii", "v")

  150.   MF_ENABLED    = 0x00000000
  151.   MF_DISABLED   = 0x00000002
  152.   
  153.   MF_GRAYED     = 0x00000001
  154.   
  155.   MF_STRING     = 0x00000000
  156.   MF_SEPARATOR  = 0x00000800
  157.   
  158.   def self.register
  159.     [
  160.     [MF_STRING | MF_GRAYED, 0, "还原(&R)", "RM_Tray.restore"],
  161.     [MF_STRING,             1, "关于(&A)", "RM_Tray.about"],
  162.     [MF_SEPARATOR,          2, nil,         nil],
  163.     [MF_STRING,             3, "前往论坛", "RM_Tray.gotobbs"],
  164.     [MF_SEPARATOR,          4, nil,         nil],
  165.     [MF_STRING,             5, "退出(&C)", "RM_Tray.exit"]
  166.     ].each do |arr|
  167.       API_REGISTER.call *arr
  168.     end
  169.   end
  170.   
  171.   #--------------------------------------------------------------------------
  172.   # ● 简单启动句柄
  173.   #--------------------------------------------------------------------------
  174.   def self.start
  175.     self.register
  176.     self.add_tray
  177.   end

  178. end

  179.   RM_Tray.start  
  180.   
  181. end




复制代码


1.03版下载
更新了一些气球提示什么的,可以在RM事件里直接操作提示信息。具体的看工程好了,咳= =

点击下载范例工程

以下为几张效果图= =bb








ps:这只素一个初版,至于以后更不更新就不知道呢。。。咳 闪人。。= =bb
神隐中,偶尔诈尸

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

2
 楼主| 发表于 2007-7-13 21:46:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
咳咳。。。RM 托盘程序。。。= = 以前ms很多人想要这个东西``{/gg}{/gg}

不介绍了

1.04最新版下载
更新全RGSS设置,包括各种信息,处理,自定义选项等。使用说明参考注释。
  1. unless defined? RM_Tray
  2. #==========================================================================
  3. # ■ RM_Tray v1.04
  4. #--------------------------------------------------------------------------
  5. #  RM窗口托盘模块。
  6. #==========================================================================
  7. module RM_Tray

  8.   #--------------------------------------------------------------------------
  9.   # ● 定义常量
  10.   #--------------------------------------------------------------------------
  11.   NIIF_INFO       = 0x00000001  # 气球普通提示
  12.   NIIF_WARNING    = 0x00000002  # 气球警告提示
  13.   NIIF_ERROR      = 0x00000003  # 气球错误提示
  14.   
  15.   DEFAULT_TIP       = "RM Tray is Running! - -bb" # 鼠标经过托盘时的提示信息
  16.   DEFALUT_INFO      = "RM 游戏开始运行 - -bbb !" # 游戏开始的时候提示信息内容
  17.   DEFAULT_INFOTITLE = "Hi"                        # 游戏开始的时候提示信息标题
  18.   
  19.   # PS: 不提示,把信息设置为 nil 即可。
  20.   
  21.   #--------------------------------------------------------------------------
  22.   # ● API声明
  23.   #--------------------------------------------------------------------------
  24.   ADD_TRAY        = Win32API.new("RMTray","_add_tray","ppp","v")
  25.   MODIFY_TIP      = Win32API.new("RMTray","_modify_tip","p","v")
  26.   SUPPORT_BALLOON = Win32API.new("RMTray","_support_balloon","v","i")
  27.   SHOW_BALLOON    = Win32API.new("RMTray","_show_balloon","ppil","v")
  28.   REMOVE_TRAY     = Win32API.new("RMTray","_remove_tray","v","v")
  29.   API_REGISTER    = Win32API.new("RMTray","_register", "lipp", "i")
  30.   
  31.   API_RESTORE     = Win32API.new("RMTray","_restore_window","v","v")
  32.   
  33.   #--------------------------------------------------------------------------
  34.   # ● 功能函数01: 查找窗口
  35.   #--------------------------------------------------------------------------
  36.   def self.findWindow
  37.     Win32API.new("user32","FindWindow","pp","i").call("RGSS Player",readIni)
  38.   end
  39.   
  40.   #--------------------------------------------------------------------------
  41.   # ● 功能函数02:读取Ini文件
  42.   #--------------------------------------------------------------------------
  43.   def self.readIni(item = "Title")
  44.     buf = 0.chr * 256
  45.     gpps = Win32API.new("kernel32","GetPrivateProfileString","pppplp","l")
  46.     gpps.call("Game",item,"",buf,256,"./Game.ini")
  47.     buf.delete!("\0")
  48.     return buf
  49.   end
  50.   
  51.   #--------------------------------------------------------------------------
  52.   # ● 定义常量:窗口句柄
  53.   #--------------------------------------------------------------------------
  54.   HWND = findWindow
  55.   
  56.   #--------------------------------------------------------------------------
  57.   # ● 特殊方法:窗口转向后台时的提示信息
  58.   #--------------------------------------------------------------------------
  59.   def self.hide_window_info
  60.     self.show_balloon("提示", "最小化到后台运行", 10000, NIIF_INFO)
  61.   end
  62.   
  63.   #--------------------------------------------------------------------------
  64.   # ● 托盘操作方法:加载托盘
  65.   #--------------------------------------------------------------------------
  66.   def self.add_tray(tip = DEFAULT_TIP, info = DEFALUT_INFO, title = DEFAULT_INFOTITLE)
  67.     ADD_TRAY.call tip, info, title
  68.   end
  69.   
  70.   #--------------------------------------------------------------------------
  71.   # ● 托盘操作方法:修改鼠标经过的提示信息
  72.   #--------------------------------------------------------------------------
  73.   def self.modify_tip(str)
  74.     MODIFY_TIP.call(str)
  75.   end
  76.   
  77.   #--------------------------------------------------------------------------
  78.   # ● 托盘操作方法:检查是否支持气球提示
  79.   #--------------------------------------------------------------------------
  80.   def self.support_balloon?
  81.     return SUPPORT_BALLOON.call != 0
  82.   end
  83.   
  84.   #--------------------------------------------------------------------------
  85.   # ● 托盘操作方法:显示气球提示
  86.   #--------------------------------------------------------------------------
  87.   def self.show_balloon(title,str,timeout = 10000,flags = NIIF_INFO)
  88.     SHOW_BALLOON.call(title,str,timeout,flags) if support_balloon?
  89.   end
  90.   
  91.   #--------------------------------------------------------------------------
  92.   # ● 托盘操作方法:移除托盘
  93.   #--------------------------------------------------------------------------
  94.   def self.remove_tray
  95.     REMOVE_TRAY.call
  96.   end
  97.   
  98.   #--------------------------------------------------------------------------
  99.   # ● 回调方法:RM_Tray.restore
  100.   #--------------------------------------------------------------------------
  101.   def self.restore
  102.     p "restore"
  103.     API_RESTORE.call
  104.   end
  105.   
  106.   #--------------------------------------------------------------------------
  107.   # ● 回调方法:RM_Tray.about
  108.   #--------------------------------------------------------------------------
  109.   def self.about
  110.     p "about"
  111.     Win32API.new("user32", "MessageBox", "lppi", "i").call      0,
  112.       "RMTray V1.04 ! - -bb from 66RPG!",
  113.       "hi",
  114.       0x00000040
  115.   end
  116.   
  117.   #--------------------------------------------------------------------------
  118.   # ● 回调方法:RM_Tray.gotobbs
  119.   #--------------------------------------------------------------------------
  120.   def self.gotobbs
  121.     p "gotobbs"
  122.     Win32API.new("shell32", "ShellExecute", "lppppi", "l").call      0, nil, "http://rpg.blue/bbs", nil, nil, 1
  123.   end
  124.   
  125.   #--------------------------------------------------------------------------
  126.   # ● 回调方法:RM_Tray.exit
  127.   #--------------------------------------------------------------------------
  128.   def self.exit
  129.     p "exit"
  130.     Win32API.new("user32","DestroyWindow", "l", "i").call HWND
  131.   end
  132.   
  133. =begin

  134.   关于 RM_Tray.register 方法。
  135.   
  136.       该方法用于给托盘的弹出菜单注册菜单项,每一项为包含4个元素的数组,
  137.   其中第一个参数用于指定菜单项的风格;
  138.      MF_STRING    - 字符串
  139.      MF_GRAYED    - 灰色(无效)化
  140.      MF_SEPARATOR - 分割线
  141.   第二个参数用于指定一个菜单项的ID号;
  142.   第三个参数用于指定对应的字符串,如果MF_SEPARATOR的情况传递nil;
  143.   第四个参数指定一个“可执行”的字符串。
  144.   
  145. =end

  146.   #--------------------------------------------------------------------------
  147.   # ● 设置菜单项状态用API:MF_ENABLED、MF_DISABLED、MF_GRAYED 三个状态
  148.   #--------------------------------------------------------------------------
  149.   API_SETITEMSTATE  = Win32API.new("RMTray", "_set_item_state", "ii", "v")

  150.   MF_ENABLED    = 0x00000000
  151.   MF_DISABLED   = 0x00000002
  152.   
  153.   MF_GRAYED     = 0x00000001
  154.   
  155.   MF_STRING     = 0x00000000
  156.   MF_SEPARATOR  = 0x00000800
  157.   
  158.   def self.register
  159.     [
  160.     [MF_STRING | MF_GRAYED, 0, "还原(&R)", "RM_Tray.restore"],
  161.     [MF_STRING,             1, "关于(&A)", "RM_Tray.about"],
  162.     [MF_SEPARATOR,          2, nil,         nil],
  163.     [MF_STRING,             3, "前往论坛", "RM_Tray.gotobbs"],
  164.     [MF_SEPARATOR,          4, nil,         nil],
  165.     [MF_STRING,             5, "退出(&C)", "RM_Tray.exit"]
  166.     ].each do |arr|
  167.       API_REGISTER.call *arr
  168.     end
  169.   end
  170.   
  171.   #--------------------------------------------------------------------------
  172.   # ● 简单启动句柄
  173.   #--------------------------------------------------------------------------
  174.   def self.start
  175.     self.register
  176.     self.add_tray
  177.   end

  178. end

  179.   RM_Tray.start  
  180.   
  181. end




复制代码


1.03版下载
更新了一些气球提示什么的,可以在RM事件里直接操作提示信息。具体的看工程好了,咳= =

点击下载范例工程

以下为几张效果图= =bb








ps:这只素一个初版,至于以后更不更新就不知道呢。。。咳 闪人。。= =bb
神隐中,偶尔诈尸

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
769
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
3
发表于 2007-7-13 22:05:14 | 只看该作者
小夏还是那么厉害呀{/hx}以前还有一点看的懂 现在完全看不懂了= =
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

4
 楼主| 发表于 2007-7-13 22:09:29 | 只看该作者
{/gg}啊。。。。咧  。。上面这人是。。- -bbbbbbbb
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-4
帖子
608
5
发表于 2007-7-13 22:21:27 | 只看该作者
...- -這個實際用處貌似不大..
   小夏還記的我米?
  不記得?馬上PIA飛~
-----------------------------------------[url=tencent://message/?uin=316907066&Site=im.qq.com&Menu=yes]找我请狂点[/url]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

6
 楼主| 发表于 2007-7-13 22:23:01 | 只看该作者
以下引用月過の無痕于2007-7-13 14:21:27的发言:

...- -這個實際用處貌似不大..
  小夏還記的我米?
不記得?馬上PIA飛~

{/gg}你是…… = =
其实给那些邪恶的人用的…… = =b
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
265
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

7
发表于 2007-7-14 01:31:02 | 只看该作者
终于又有需要下载的东西了.....
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

看不到我

梦石
0
星屑
50
在线时间
229 小时
注册时间
2005-11-6
帖子
1741

贵宾

8
发表于 2007-7-14 01:34:44 | 只看该作者
越来越难以想象了……
老板键??{/fd}
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
265
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

9
发表于 2007-7-14 01:37:19 | 只看该作者
又是dll的....打算在未来的一年内开始学这个东西的编写...

不过想来打算用这个实现的东西都被XN实现了....

全键盘....
禁止关闭....
禁止alt
托盘

{/pz}{/pz}{/pz}而且用的时间一般是我的十分之一....看来我还需要重新上一次学....
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3263
在线时间
3616 小时
注册时间
2006-9-6
帖子
37399

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

10
发表于 2007-7-14 01:42:53 | 只看该作者
看起来不错~

给那些上班时偷偷玩游戏的人用……{/dy}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-15 10:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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