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

Project1

 找回密码
 注册会员
搜索
楼主: 流川枫
打印 上一主题 下一主题

[讨论] WIN7下運行RMVX遊戲開頭無響應十多秒的解決辦法

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1803
在线时间
133 小时
注册时间
2013-10-6
帖子
193
1
发表于 2013-10-6 20:55:08 | 显示全部楼层
我这里是第一次运行时会卡一阵子,鼠标无响应,整个屏幕停止重绘,之后就好了{:2_270:}

如果楼主是每次都这样的话,可以试试两个方法
1 放一个假的dmusic.dll到游戏目录下,因为Windows的DLL加载顺序问题不知道能不能骗过去
2 如果每次启动都会卡,楼主会编程的话自己写一个Loader,阻止RM程序加载dmusic.dll即可

具体实现的话,方便起见可以用微软的Detours库。
启动游戏进程的时候使用DetourCreateProcessWithDllEx,使用方法和CreateProcess差不多,多出的两个参数,第一个填写你写的DLL名称,第二个给NULL即可
DLL方面,在DllMain里面进行API HOOK即可
过程类似这样,以C++为例
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(LPVOID&)Old_LoadLibraryW,New_LoadLibraryW);
DetourTransactionCommit();//一定要commit才能生效
至于拦截的处理
HMODULE (WINAPI* Old_LoadLibraryW)(LPCWSTR lpLibFileName)=LoadLibraryW;
HMODULE WINAPI New_LoadLibraryW(LPCWSTR lpLibFileName)
{
        if(wcscmp(lpLibFileName,L"dmusic.dll")==0)//如果加载的是dmusic.dll
        {
                return NULL;//直接让函数失败
        }
        return Old_LoadLibraryW(lpLibFileName);//不是的话正常加载
}
这样就可以屏蔽RM对这个DLL的加载,其他应用不受影响。
好吧我承认我很懒,随手写的没有测试 有兴趣的可以做出来 Detours可以从微软官网下载,需要自己编译一下,挺方便的,或者你自己写API HOOK也行 只是代码比较多
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1803
在线时间
133 小时
注册时间
2013-10-6
帖子
193
2
发表于 2013-10-7 10:55:54 | 显示全部楼层
本帖最后由 不死鸟之翼 于 2013-10-7 11:06 编辑
流川枫 发表于 2013-10-7 04:48
第一个方法没用无论如何都会加载系统的,所以1L里只好直接禁止运行该DLL。 第二个方法早就试过了,在OD都 ...

其实我们忽略了一个问题,DirectX其实是以COM组件的形式提供的,dmusic的加载肯定不在程序内,HOOK这里显然没用{:2_263:}OD抓不到也正常
所以禁止相关组件的初始化理论上可以达到防止卡死的目的
如果你有Dx9的SDK的话可以试试挂接一下CoCreateInstance和/或与之相关的API判断第一个参数CLSID是不是CLSID_DirectMusic***(具体是哪个我不敢肯定),如果是的话禁止初始化应该就没问题了
我这里只有系统引导后第一次启动游戏会卡,所以其实也没什么影响。
PS:唉我第一天来6R就这么作死233

点评

原来如此,不过已经完美解决了。卸载瑞星杀毒就是完美的既能播放MIDI最多也只等4秒  发表于 2013-10-7 11:08
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1803
在线时间
133 小时
注册时间
2013-10-6
帖子
193
3
发表于 2013-10-10 23:49:16 | 显示全部楼层
流川枫 发表于 2013-10-8 08:36
還有一招不需要補丁就可以實現,就是弄一個低級帳戶只禁止該帳戶運行那個DLL,然後RMVX的EXE創建快捷方式 ...

Windows 7的凭据管理器似乎可以保存账户的密码信息作为登录凭据,不过我没用过……我觉得最干净彻底的办法就是Hack一下自带的RGSS Player,以此为基础做出的游戏就都不会加载MIDI
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-18 04:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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