我做了一个文件加解密的程序,并且写了一个鼠标右键菜单的Shell扩展,这个ATL组件和加解密程序在一个目录里面。安装时这个ATL组件已经注册了,现在我想通过鼠标右键菜单来调用我的加解密程序,该如何得到我的加解密程序的路径呢?我想通过相对路径获取,即在这个ATL组件代码内通过./来调用,可是发现调用不了。
请问,这个COM组件注册后,他的相对路径是怎样的一种情况?
也就是说,在这个COM里面,./表示哪个路径?../又表示哪个路径?

解决方案 »

  1.   

    ./,是调用这个atl组件的exe所在目录。
      

  2.   

    直接获得com组件路径,GetModuleFileName
      

  3.   

    谢谢楼上!
    我查看了MSDN,发现这个函数的第一个参数需要传入一个模块的句柄。在ATL里面怎样才能得到自己的句柄呢?
      

  4.   

    AfxGetInstanceHandle()
    TCHAR pArr[MAX_PATH]; 
    memset( pArr, 0, MAX_PATH*sizeof(TCHAR)); 

    ::GetModuleFileName( AfxGetInstanceHandle(), pArr, MAX_PATH - 1 ); 
      

  5.   

    AfxGetInstanceHandle()
    TCHAR pArr[MAX_PATH]; 
    memset( pArr, 0, MAX_PATH*sizeof(TCHAR)); 

    ::GetModuleFileName( AfxGetInstanceHandle(), pArr, MAX_PATH - 1 );