Project1

标题: [RMXP] 真·后台运行(2009/11/25 重要更新) [打印本页]

作者: 紫苏    时间: 2009-6-11 18:54
标题: [RMXP] 真·后台运行(2009/11/25 重要更新)
本帖最后由 紫苏 于 2009-11-25 11:31 编辑

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

2009/06/11:


2009/07/14:


2009/09/01:


2009/11/25:


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

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

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

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

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

请务必保留 Lib 文件夹 以及其中的 BackgroundRunning.dll
作者: zh99998    时间: 2009-6-11 18:58
终于出现了……期待好久[LINE]1,#dddddd[/LINE]看了……Very Good
作者: tommay    时间: 2009-6-11 19:37
先收着了,暂时看不懂= =
作者: darkten    时间: 2009-6-11 19:50
好强大...
虽然暂时不需要这个功能,但还是收藏起来先...

转过来技术区了...
作者: 越前リョーマ    时间: 2009-6-11 19:53
不用再另外开别的东西了么?
作者: 灼眼的夏娜    时间: 2009-6-11 19:54
不错~{/qiang}

写了很多东西 看过很多 都知道大部分处理窗口焦点都是 WM_ACTIVATEAPP 消息。。= =但完全没想到= ={/gg}
作者: zh99998    时间: 2009-6-11 19:55
紫苏大大再写个VX版吧……
这个直接帖到VX里会挂掉

作者: 后知后觉    时间: 2009-6-11 20:21
紫苏总是能给人带来惊喜{/gg}

发现后遗症
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 塑望    时间: 2009-6-11 21:01
仍在测试中..
作者: 紫苏    时间: 2009-6-11 21:02
以下引用越前リョーマ于2009-6-11 11:53:25的发言:

不用再另外开别的东西了么?

不用了,现在看来美兽大人的那个确实绕弯路了~

以下引用zh99998于2009-6-11 11:55:57的发言:

紫苏大大再写个VX版吧……
这个直接帖到VX里会挂掉

不知道到为啥,我自从换了 vista 之后 VX 就使用不能了(1.01),一打开 game.exe 就提示找不到 dll,如果直接复制 dll 到游戏目录的话则提示

还是请夏娜大人给 VX 写一个窗口过程吧

以下引用后知后觉于2009-6-11 12:21:50的发言:

发现后遗症
呃,我的卡巴没报这个,应该无大碍吧
作者: 后知后觉    时间: 2009-6-11 21:07
我们肯定是觉得无关系的撒

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

会产生恐慌{/gg}
作者: zh99998    时间: 2009-6-11 21:10
以下引用紫苏于2009-6-11 13:02:30的发言:
不知道到为啥,我自从换了 vista 之后 VX 就使用不能了(1.01

试试VX区置顶帖的呢
作者: enghao_lim    时间: 2009-6-11 21:51
我一直觉得看过这功能,但却一直想不起来在哪看过……回去翻翻……{/lh}
作者: 66rpg学习    时间: 2009-6-11 23:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 八云紫    时间: 2009-6-11 23:41
话说,这样还可以处理其他的消息的说,比如鼠标什么的,应该可以吧.
作者: 美兽    时间: 2009-6-12 00:36
呵呵,当初想到的是焦点问题,所以利用父窗体绕过去,结果平添了很多麻烦,不过那样子可以直接加载wma控件实现RM的高兼容视频播放。

其实有些看似很复杂的东西,实现起来往往很简单,有些人似乎很瞧不起这种简单的东西,实际简单的想法却需要极其复杂的过程才能酝酿出来。

赞{/qiang}

其实视频播放FDR已经给出了很明确的框架,高兼容视频播放不过是将原始MCI换为自定义DLL,剑兄不妨一试,绝对可行,我试过。
作者: orochi2k    时间: 2009-6-12 01:48
以下引用紫苏于2009-6-11 10:54:20的发言:


一开始我以为是 WM_ACTIVATE

偶也是 o(╯□╰)o
作者: kula1900    时间: 2009-6-12 02:20
哈哈~紫苏也换了vista?? 试下兼容模式到xp
作者: kula1900    时间: 2009-6-12 02:30
下载了 感觉⊙﹏⊙b汗~居然不知道有啥用 [LINE]1,#dddddd[/LINE]版主对此帖的评论:『请善用编辑功能,请勿连贴.』,积分『-10』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
作者: 后知后觉    时间: 2009-6-12 02:42
以下引用kula1900于2009-6-11 18:30:43的发言:

下载了 感觉⊙﹏⊙b汗~居然不知道有啥用

进入标题画面后 把窗口最小化 鼠标点击桌面
然后按上下键就知道了 听光标移动的声音
作者: niji    时间: 2009-6-12 08:00
终于出现了啊 {/se}
作者: 紫苏    时间: 2009-6-12 11:41
以下引用后知后觉于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 中就是高兼容了呢?还望兽兄指教
作者: zh99998    时间: 2009-6-12 14:41
以下引用紫苏于2009-6-12 3:41:45的发言:
1.02 安装的时候就失败了,无论是运行 .exe 还是 .vbs 都弹出一个没有内容的消息框
还是让夏娜再给 VX 写一个窗口过程吧

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

这种情况大多是因为安装了别的版本的RMVX导致的,尝试彻底卸载以前装过的RMVX
作者: goahead    时间: 2009-6-12 18:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: 紫苏    时间: 2009-6-12 19:41
以下引用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 就直接返回了
作者: 倚天    时间: 2009-6-12 19:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: zh99998    时间: 2009-6-12 19:47
以下引用紫苏于2009-6-12 11:41:31的发言:
问题是如何彻底卸载?我用 1.01 自带的卸载程序卸载后,又删了些注册表里面 RPGVX 的信息,再装 1.02 还是一样的问题

能详细的说一下错误提示是什么样子的吗
还有…你是简体中文版WinXP或更高版本的系统吧……
作者: 紫苏    时间: 2009-6-12 19:51
以下引用zh99998于2009-6-12 11:47:36的发言:

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

错误提示是空白消息框{/gg}
操作系统是英文 Windows Vista sp2……
以前用的 XP 系统也是英文的,但却可以运行 VX
作者: dna_7086    时间: 2009-6-12 21:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: dna_7086    时间: 2009-6-12 22:00
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1