怎么样让游戏多次运行???大多数的游戏都只会让程序运行一次。也许是用了全局变量。也许是用了个函数。但是我们怎么样来让它多次运行呢?

解决方案 »

  1.   

    先看看游戏有没有命令行说明,是否可以通过命令行参数允许游戏同时运行多个实例.
    如果程序没有如上的命令参数可用,可以通过程序文件的导入函数简单判断游戏是怎样实现侦测自身的,比如有的用CreateMutex(在kernel32.dll中)或者findwindow(在user32.dll中)来确定是否为重复运行,则可以修改或者破坏游戏程序检测自身多次运行的机制,使程序得以多实例运行.
      

  2.   

    lisunlin0(李林)
    已经说得比较清楚了,如果你不能理解.只能说你需要实习一下这方面的知识:
    1.进程/线程/动态库.
    2.同步.
    其实最简单的方法就是你写一个程序,这个程序在系统中只能运行一个.你实现了这个.那你就知道怎么去解除.不然.别人怎么也帮不了你.
      

  3.   

    hMutex = CreateMutex(NULL,NULL,"MyProgram");
    if(GetLastError() == ERROR_ALREADY_EXISTS) {
    CloseHandle(hMutex);
    hMutex = NULL; 
    MessageBox(NULL,"已有一个程序正在运行","",MB_OK);
    exit(0);
    }
    像lisunlin0(李林)说的那样,通常程序都是这样来判断是否已经在运行,如果是这种,简单地修改一下跳转就能搞定,只需要会调试器,明白一些基本的汇编指令
      

  4.   

    这个基本上很难做到,楼上都已经说得很清楚了,唯一的办法是Crack,那就要看楼主的Sofeice的功力了.
      

  5.   

    看这个吧,程序多开器:http://blog.sina.com.cn/s/blog_4e5dcb9701000c3y.html小弟我做的程序,嘿嘿,也许可以实现,专门让这样的代码无效的

    hMutex = CreateMutex(NULL,NULL,"MyProgram");
    if(GetLastError() == ERROR_ALREADY_EXISTS) {
    CloseHandle(hMutex);
    hMutex = NULL;
    MessageBox(NULL,"已有一个程序正在运行","",MB_OK);
    exit(0);
    }”
      

  6.   

    MARKlinuxpgy(永远) 可否简述一下原理吗
      

  7.   

    回复人:wltg2001(红猪) ( 五级(中级)) 信誉:100  2007-9-20 18:02:45  得分:0
    ?  这个基本上很难做到,楼上都已经说得很清楚了,唯一的办法是Crack,那就要看楼主的Sofeice的功力了.----------------------------------------------------------------------------------ollydbg也是不错的工具,比Softice简单易用。
      

  8.   

    MARKlinuxpgy(永远) 可否简述一下原理吗
    -------------------------
    不好意思,我这个是共享软件,嘿嘿~~
      

  9.   

    不难。
    可以用API钩子,钩住CreateMutex函数,让它的返回值不是“ERROR_ALREADY_EXISTS”就可以了。
      

  10.   

    是啊,远注一下就OK了,把信号量改一下,有可以是CreateMutex或FileMapping,等