在ISAPI扩展中如何办到?

解决方案 »

  1.   

    调用这个函数……
    那么如何在Dll里面取到自己的Handle?
      

  2.   

    可以用如下函数:
    sDllPath :=ExtractFilePath(ParamStr(0));
      

  3.   

    var hDll:THandle; 
      Test1:function:integer; 
    begin 
      hDll:=LoadLibrary('mydll.dll'); 
      if hDll<32 then exit;//如果Dll无法加载则跳出 
      @Test1:=GetProcAddress(hDll,MakeIntResource(1)); 
        //取得mydll中的第一个函数的地址。 
      ... 
      FreeLibrary(hDll); 
    end;  
      

  4.   

    但是我所说的是在ISAPI扩展Dll中取得自己的路径
    而不是取得其它的Dll路径就是说,这个Dll是等待人调用的 它自己如何取得Dll的路径?
    用Null做参数传入取得的是dllhost.exe路径另外 mrwyf(流星飞) 的方法取到的也是dllhost.exe路径麻烦几位再替我想想办法 谢谢了
      

  5.   

    调用这个函数……
    那么如何在Dll里面取到自己的Handle?参考一下c++版本的。
    #pragma argsused
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
        switch (reason)
        {
            case DLL_PROCESS_ATTACH:
                if(lpReserved)
                    OutputDebugString("DLL_PROCESS_ATTACH Static load");
                else
                    OutputDebugString("DLL_PROCESS_ATTACH Dynamic load");
                GetModuleFileName(hinst,dllpath,255);
                break;
            case DLL_PROCESS_DETACH:
                if(lpReserved)
                    OutputDebugString("DLL_PROCESS_DETACH Call process termination!");
                else
                    OutputDebugString("DLL_PROCESS_DETACH FreeLibrary");
                break;
            case DLL_THREAD_ATTACH:
                OutputDebugString("DLL_THREAD_ATTACH");
                break;
            case DLL_THREAD_DETACH:
                OutputDebugString("DLL_THREAD_DETACH");
                break;
            default:
                OutputDebugString("DllEntryPoint");
        }
        return 1;
    }