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

Project1

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

[已经解决] 如何判断游戏的窗口关闭按钮的按下

[复制链接]

Lv1.梦旅人

梦石
0
星屑
63
在线时间
246 小时
注册时间
2012-4-4
帖子
211
跳转到指定楼层
1
发表于 2012-10-13 13:55:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
就是这个
6R,好久不见。

Lv1.梦旅人

梦石
0
星屑
53
在线时间
158 小时
注册时间
2011-2-1
帖子
130
2
发表于 2012-10-13 18:20:18 | 只看该作者
那个是软件的设定来的吧。好像与ruby那些无关的。。。
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
3
发表于 2012-10-13 18:22:37 | 只看该作者
本帖最后由 Wind2010 于 2012-10-13 18:26 编辑
  1. alias special_exit exit unless defined?("special_exit")
  2. def exit(num)
  3.   #
  4.   special_exit(num)
  5. end
复制代码
不过这样的话是任何退出动作都会触发

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
53
在线时间
158 小时
注册时间
2011-2-1
帖子
130
4
发表于 2012-10-13 19:23:38 | 只看该作者
Wind2010 发表于 2012-10-13 18:22
不过这样的话是任何退出动作都会触发

那么是不是可以做个如果按下关闭就弹出一些确定存档的信息吗?

点评

_(:3」∠)_参考BAS  发表于 2012-10-13 19:25
回复

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

5
发表于 2012-10-13 23:01:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3039
在线时间
1052 小时
注册时间
2011-8-16
帖子
242
6
发表于 2012-10-14 12:18:30 手机端发表。 | 只看该作者
如果单纯捕捉的话需要使用Win32API,如果只是要在退出前执行某些操作的话就重定义Kernel模块的exit方法
回复

使用道具 举报

Lv2.观梦者

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

贵宾

7
发表于 2012-10-14 14:39:08 | 只看该作者
  1. #==============================================================================
  2. # ■ EasyConv
  3. #------------------------------------------------------------------------------
  4. #  转码模块。
  5. #==============================================================================
  6. module EasyConv
  7.   #--------------------------------------------------------------------------
  8.   # ● 常量定义
  9.   #--------------------------------------------------------------------------
  10.   CP_ACP = 0
  11.   CP_UTF8 = 65001
  12.   #--------------------------------------------------------------------------
  13.   # ● 模块函数
  14.   #--------------------------------------------------------------------------
  15.   module_function
  16.   #--------------------------------------------------------------------------
  17.   # ● 转码
  18.   #--------------------------------------------------------------------------
  19.   def s2u(text)
  20.     m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  21.     w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  22.     len = m2w.call(CP_ACP, 0, text, -1, nil, 0)
  23.     buf = "\0" * (len*2)
  24.     m2w.call(CP_ACP, 0, text, -1, buf, buf.size/2)
  25.     len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil)
  26.     ret = "\0" * len
  27.     w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil)
  28.     ret[-1] = ""
  29.     return ret
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 转码
  33.   #--------------------------------------------------------------------------
  34.   def u2s(text)
  35.     m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  36.     w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  37.     len = m2w.call(CP_UTF8, 0, text, -1, nil, 0)
  38.     buf = "\0" * (len*2)
  39.     m2w.call(CP_UTF8, 0, text, -1, buf, buf.size/2)
  40.     len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil)
  41.     ret = "\0" * len
  42.     w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil)
  43.     return ret
  44.   end
  45. end

  46. HWND = Win32API.new("user32", "GetActiveWindow", nil, 'l')
  47. module Kernel
  48.   unless defined?(old_exit)
  49.     MessageBox = Win32API.new('user32', 'MessageBox', "p p p i", 'i')
  50.     alias old_exit exit
  51.     def exit(*arg)
  52.       begin
  53.         old_exit(*arg) if arg[0] == true
  54.         text1 = "确定要退出游戏么?"
  55.         text2 = "退出游戏"
  56.         msg = MessageBox.call(HWND.call, EasyConv.u2s(text1), EasyConv.u2s(text2), 1)
  57.         if msg == 1
  58.           old_exit(*arg)
  59.         end
  60.       rescue
  61.         old_exit(*arg)
  62.       end
  63.     end
  64.   end
  65. end
复制代码
以前写过这样的东西,其实还蛮好使的~
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 06:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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