想HOOK 打印文件名用API HOOK StartDocW函数,但是每次都只能HOOK到文件名的第一个字符.
比如打印的文件名为windows.txt那么HOOK的就是字符w了,
下面是我的代码
   CString st = "";
   st.Format(_T("%s"),lpdi->lpszDocName);
   DbgPrint("StartDocW %s",st);
    
其他的办法试了好多次,都不能拿到文件名.
  
  哪位大哥能指点一下,拿到完整的文件名啊?

解决方案 »

  1.   

    尝试一下:DbgPrint("StartDocW %ws",st);
      

  2.   

    如果还不行,那么下面的肯定可以:
    DbgPrint("StartDocW %ws",lpdi->lpszDocName);
      

  3.   

    切记,你hook的是StartDocW,而如果你不定义UNICODE,那么_T就是什么都没有,即认为是ansi.
      

  4.   

    USES_CONVERSION;
    CString strDocName=W2A(lpdi->lpszDocName);     //SK:  see MFC Tech Note 059
      

  5.   

    yigx007(who's superior)的方法其实好好的,后来试了一下,
    只是当时太过于激动,就只回复了hxfij(New)的分,后来发现大哥的方法其实好好的...
    没能给分.对不起大哥..下次提问题了一定补上
      

  6.   

    don't matter. to solve a problem, we should think over more methods than one.