使用C++编写Win32的DLL时,利用DllMain函数可以实现在Dll被加载到进程或者线程,以及被进程或者线程卸载的时候执行某些操作。
    switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
                  //做我想做的事情
                  break;
case DLL_THREAD_ATTACH:
                  //做我想做的事情
                  break;
case DLL_THREAD_DETACH:
                  //做我想做的事情
                  break;
case DLL_PROCESS_DETACH:
                  //做我想做的事情
break;
}
那么想在C#写的Dll中获得相同的效果,该如何实现?

解决方案 »

  1.   

        恩,问题是加载dll貌似并不会初始化什么类的实例出来啊,那就伤脑筋了吧?
      

  2.   

    C#写的DLL只是个类库,不是标准DLL,没有类似于DllMain的入口函数。
    你可以编写一个类及其方法,然后在整个程序入口处调该DLL的这个类的方法,这样就相当于这个DLL的入口方法了。
      

  3.   

    看样子,这点上C#的确不行啊,恩,算了,下次写个C#的DLL,然后用Win32再写个DLL,然后用Win32的DLL反调C#的DLL中的函数,在Win32的DllMain中做自己想做的事情。
    结贴~