@wz520
2021-05-04T18:57:34.000000Z
字数 1493
阅读 5505
东方STG
由 ZUN 开发的东方 STG 官方作品中,有一部分作品是不能同时运行的。
比如开着 永夜抄 不关,再启动 花映冢 的话,会报“不能双开”(二つは起動できません)的错误,让人感到莫名其妙。
或者开着 风神录 再开 黄昏酒场 ,也会弹出类似的错误框。
尤其是自th12(星莲船)开始到th16.5(秘封噩梦日记)之间的所有 STG 作品均无法同时运行:
举个栗子:
总之这几个作品中只要你开了其中任何一个并且不关,就不能同时开另一个。
其实 OD 一下就很清楚了,ZUN使用了最常见的 CreateMutex
大法来防止同一个游戏的多重启动。
这个方法在很多讲 Win32 编程的书籍都有介绍,用法也不复杂,很多人都会用。
但是在部分 STG 作品中,ZUN 却在这个函数的调用上犯了一个大错误:这些作品传给 CreateMutex
的所有参数都是一样的,尤其是最后一个参数(互斥体名称)。
以th12(星莲船)开始到th16.5(秘封噩梦日记)之间的作品为例,它们调用 CreateMutex
的代码都是:
CreateMutex(NULL, TRUE, "Touhou 12 App");
明明是不同的程序,却都要创建一个名为 Touhou 12 App
的互斥体。
结果就是上面提到的几个游戏中的任何一个都会认为它们和自己是“同一个游戏”。自然就无法正常阻止“同一个游戏”的多重启动了。
鬼形兽
) 终于换掉了互斥体名称,所以该作可以和其他作品同时运行。希望 2un 在制作 th18 时仍能记得更改这里的互斥体名称。>_<
虹龙洞
)真的换掉了。可喜可贺!那么继续期待 2un 在制作 th19 >_<
Touhou 12 App
被用在星莲船、文花帖DS、妖精大战争、神灵庙、辉针城、弹幕天邪鬼、绀珠传、天空璋、秘封噩梦日记。一共是⑨个作品。这是从红魔乡开始到目前为止的所有官作游戏(包括黄昏酒场)所使用的互斥体名称一览表。具有相同互斥体名称的游戏是不能同时运行的。
游戏名称 | 版本号 | 互斥体名称 |
---|---|---|
红魔乡 | 1.02h | Touhou Koumakyou App |
妖妖梦 | 1.00b | Touhou YouYouMu App |
永夜抄 | 1.00d | Touhou 08 App |
花映冢 | 1.50a | Touhou 08 App |
文花帖 | 1.02a | Touhou 08 App |
风神录 | 1.00a | Touhou 10 App |
黄昏酒场 | 1.00a | Touhou 10 App |
地灵殿 | 1.00a | Touhou 11 App |
星莲船 | 1.00b | Touhou 12 App |
文花帖DS | 1.00a | Touhou 12 App |
妖精大战争 | 1.00a | Touhou 12 App |
神灵庙 | 1.00c | Touhou 12 App |
辉针城 | 1.00b | Touhou 12 App |
弹幕天邪鬼 | 1.00a | Touhou 12 App |
绀珠传 | 1.00b | Touhou 12 App |
天空璋 | 1.00a | Touhou 12 App |
秘封噩梦日记 | 1.00a | Touhou 12 App |
鬼形兽 | 1.00b | th17 App |
虹龙洞 | 1.00a | th18 App |
可见除了自th12(星莲船)到th16.5(秘封噩梦日记)之间的所有 STG 作品外,还有下列这些作品不能同时运行: