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

Project1

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

[原创发布] [RMXP] 真·后台运行(2009/11/25 重要更新)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
跳转到指定楼层
1
发表于 2009-6-11 18:54:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 紫苏 于 2009-11-25 11:31 编辑

RMXPBR.rar (207.58 KB, 下载次数: 2790)

2009/06/11:
  • 更新了在窗口失去键盘焦点时不再响应键盘。如果用了全键盘检测脚本,请自行在判断按键等方法中做类似 Input.update 中的 if 判断


2009/07/14:
  • 修正了窗口不在键盘焦点时按键按下仍然保持失去焦点前状态的问题(例:地图上按住 ←,切换到其它窗口,角色就会一直保持左移)


2009/09/01:
  • 不再使用夏娜的 RM 窗口过程脚本,而是采用了 XP 和 VX 通用的后台运行 DLL(详情请参考 [RMVX] 真·后台运行
  • 添加对 Input.trigger? 的键盘焦点判断
  • 在范例工程中增加了后台运行的开关功能演示


2009/11/25:
  • 改变后台运行 DLL 为静态链接 C 运行时(CRT),这样在没有安装 CRT 的平台上也能使用该 DLL。这个改变增加了约 5 倍于原 DLL 的文件大小


后台运行原理:
惊人地简单,以前大家可能都想复杂了

由于有 Graphics.update 调用后就无法后台运行的这个现象,我们可以推测出 Graphics.update 是 RMXP 处理 Windows 消息的函数,消息循环很可能就在 Graphics.update 内部~当窗口过程函数中捕获到某个窗口失去键盘焦点时会发送给窗口过程的消息,整个程序就停止了。

那么自然而然地就会想到,如果我们把这个消息拦截了,Graphics.update 岂不是就发现不了 RMXP 的窗口失去了焦点,而就会继续更新画面了吗?

于是开始动手——首先要用到夏娜大人写的 RM 窗口过程,让我们能在 Graphics.update 之前处理消息~不过这个消息是什么呢?

一开始我以为是 WM_ACTIVATE,但是拦截后发现无效;于是试了 WM_ACTIVATEAPP,于是,见证了奇迹……

请务必保留 Lib 文件夹 以及其中的 BackgroundRunning.dll

评分

参与人数 1星屑 +8 收起 理由
天使怪盗 + 8

查看全部评分

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
49
在线时间
0 小时
注册时间
2007-7-1
帖子
552
30
发表于 2009-6-12 22:00:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
49
在线时间
0 小时
注册时间
2007-7-1
帖子
552
29
发表于 2009-6-12 21:21:30 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
28
 楼主| 发表于 2009-6-12 19:51:05 | 只看该作者
以下引用zh99998于2009-6-12 11:47:36的发言:

能详细的说一下错误提示是什么样子的吗
还有…你是简体中文版WinXP或更高版本的系统吧……

错误提示是空白消息框{/gg}
操作系统是英文 Windows Vista sp2……
以前用的 XP 系统也是英文的,但却可以运行 VX
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
599
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

27
发表于 2009-6-12 19:47:36 | 只看该作者
以下引用紫苏于2009-6-12 11:41:31的发言:
问题是如何彻底卸载?我用 1.01 自带的卸载程序卸载后,又删了些注册表里面 RPGVX 的信息,再装 1.02 还是一样的问题

能详细的说一下错误提示是什么样子的吗
还有…你是简体中文版WinXP或更高版本的系统吧……
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-6-12
帖子
340
26
发表于 2009-6-12 19:42:09 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
25
 楼主| 发表于 2009-6-12 19:41:31 | 只看该作者
以下引用zh99998于2009-6-12 6:41:50的发言:

这种情况大多是因为安装了别的版本的RMVX导致的,尝试彻底卸载以前装过的RMVX

呃,的确是解压成功了……
问题是如何彻底卸载?我用 1.01 自带的卸载程序卸载后,又删了些注册表里面 RPGVX 的信息,再装 1.02 还是一样的问题

以下引用goahead于2009-6-12 10:51:45的发言:

谁能解释一下夏娜大人写的 RM 窗口过程作用~~~~拦截MSG?

用 wnd_proc 这个函数替换原来 RM 窗口的窗口过程函数,处理各种消息~
这里对 WM_ACTIVATEAPP 的处理可以说是拦截,因为在把它传递给默认窗口过程处理之前,wnd_proc 就直接返回了
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
21 小时
注册时间
2007-7-3
帖子
573
24
发表于 2009-6-12 18:51:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
599
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

23
发表于 2009-6-12 14:41:50 | 只看该作者
以下引用紫苏于2009-6-12 3:41:45的发言:
1.02 安装的时候就失败了,无论是运行 .exe 还是 .vbs 都弹出一个没有内容的消息框
还是让夏娜再给 VX 写一个窗口过程吧

如果安装的时候能弹出自解压程序的框,那么就是安装成功
至于那个没有内容的消息框是因为,安装完毕后自动运行,而RMVX编辑器的设定是出错弹没有消息的框

这种情况大多是因为安装了别的版本的RMVX导致的,尝试彻底卸载以前装过的RMVX
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
22
 楼主| 发表于 2009-6-12 11:41:45 | 只看该作者
以下引用后知后觉于2009-6-11 13:07:56的发言:

我们肯定是觉得无关系的撒

但是用到游戏里 让玩家看到这条消息的话。。。。。

会产生恐慌

这个应该是由于 Input.update 通过 GetAsyncKeyState 来全局判断键盘按下状态,导致窗口失去键盘焦点时仍然能够响应键盘输入,所以被认为是可能的键盘记录病毒了……添加一个失去焦点时不再 Input.update 试试,嗯
以下引用zh99998于2009-6-11 13:10:12的发言:

试试VX区置顶帖的呢

1.02 安装的时候就失败了,无论是运行 .exe 还是 .vbs 都弹出一个没有内容的消息框
还是让夏娜再给 VX 写一个窗口过程吧{/cy}
以下引用火焰猫燐于2009-6-11 15:41:23的发言:

话说,这样还可以处理其他的消息的说,比如鼠标什么的,应该可以吧.

嗯,夏娜写的窗口过程就是为了实现这个功能
以下引用kula1900于2009-6-11 18:20:45的发言:

哈哈~紫苏也换了vista?? 试下兼容模式到xp

无效
以下引用美兽于2009-6-11 16:36:52的发言:

其实视频播放FDR已经给出了很明确的框架,高兼容视频播放不过是将原始MCI换为自定义DLL

呵呵,改天试试看~
不过为啥放到 DLL 中就是高兼容了呢?还望兽兄指教
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-1 07:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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