现在有一个程序,假设名字叫1.exe
还有一个dll文件,名字叫1.dll1.exe会自动加载1.dll每次运行1.exe这个程序的时候都是多次运行。也就是打开2次以上的1.exe,这样就会有2个以上的1.exe文件的进程。每个进程中都有1.dll。每个进程中的1.dll也都发挥作用。现在想做到在多次运行1.exe的前提下。只有一个进程中的1.dll能执行功能代码。最好在1.dll的代码上下手。谢谢大家。

解决方案 »

  1.   

    其实1.dll的功能代码只有1份,只不过被映射到每个1.exe的内存空间。
      

  2.   

    是的,其实1.exe也只有一份,也是被映射到各个1.exe的进程空间去的。这些OS做了优化的。
      

  3.   


    映射到不同的进程空间就会执行N次。我现在只想让一个1.dll发挥功能。假如说我这个1.dll被加载后会出现一个窗口。
    那么多个1.exe运行后,就会有多个窗口。现在想在1.dll上做手脚,只出现一个窗口。
      

  4.   

    dll初始化加入类似代码
    if(NULL != CreateMutex(......))
    {
    if(ERROR_ALREADY_EXISTS == GetLastError())
    {
    MessageBox(NULL, "请不要运行第二个实例", NULL, MB_ICONERROR);
    }
    }
      

  5.   

    可以利用dll的共享节来完成楼主的目的。