怎么样让游戏多次运行???大多数的游戏都只会让程序运行一次。也许是用了全局变量。也许是用了个函数。但是我们怎么样来让它多次运行呢?
解决方案 »
- MFC里面,聊天软件的用户列表的实现的讨论
- 不用CFileDialog怎么打开文件
- 如果CComboBox里有一个值是"ab",再FindString(-1,"a");尽然也能找到,再SelectString(-1,"a");尽然就是"ab"这个值??
- ADO使用中的一个小问题!
- 大家来看看我的CSkinButton里的绘制函数,CreateCompatibleDC()总出错.
- 求助:关于VC打印的问题?
- 关于CWinApp的疑问!???多谢
- 请教TLB文件格式
- CPropertySheet的问题
- 列表视图控件List Control显示问题
- CString 操作
- 请都高手,关于线程与DLL问题
如果程序没有如上的命令参数可用,可以通过程序文件的导入函数简单判断游戏是怎样实现侦测自身的,比如有的用CreateMutex(在kernel32.dll中)或者findwindow(在user32.dll中)来确定是否为重复运行,则可以修改或者破坏游戏程序检测自身多次运行的机制,使程序得以多实例运行.
已经说得比较清楚了,如果你不能理解.只能说你需要实习一下这方面的知识:
1.进程/线程/动态库.
2.同步.
其实最简单的方法就是你写一个程序,这个程序在系统中只能运行一个.你实现了这个.那你就知道怎么去解除.不然.别人怎么也帮不了你.
if(GetLastError() == ERROR_ALREADY_EXISTS) {
CloseHandle(hMutex);
hMutex = NULL;
MessageBox(NULL,"已有一个程序正在运行","",MB_OK);
exit(0);
}
像lisunlin0(李林)说的那样,通常程序都是这样来判断是否已经在运行,如果是这种,简单地修改一下跳转就能搞定,只需要会调试器,明白一些基本的汇编指令
“
hMutex = CreateMutex(NULL,NULL,"MyProgram");
if(GetLastError() == ERROR_ALREADY_EXISTS) {
CloseHandle(hMutex);
hMutex = NULL;
MessageBox(NULL,"已有一个程序正在运行","",MB_OK);
exit(0);
}”
? 这个基本上很难做到,楼上都已经说得很清楚了,唯一的办法是Crack,那就要看楼主的Sofeice的功力了.----------------------------------------------------------------------------------ollydbg也是不错的工具,比Softice简单易用。
-------------------------
不好意思,我这个是共享软件,嘿嘿~~
可以用API钩子,钩住CreateMutex函数,让它的返回值不是“ERROR_ALREADY_EXISTS”就可以了。