yiqunch
驱动牛犊
驱动牛犊
  • 注册日期2007-07-21
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1913回复:4

如何获得打印文档的全路径名?

楼主#
更多 发布于:2007-09-13 23:38
Hi, 各位达人,如题。
我已经翻了一遍以往的帖子,试了已给出的方法:
在OEMStartDoc函数中使用:

    JOB_INFO_1 *pJobinfo = NULL;
    DWORD cbBuf = 0;
    DWORD pcbNeed;
    char docname[256];
    GetJob(pdevobj->hPrinter,dwJobId,1,(LPBYTE)pJobinfo,cbBuf,(LPDWORD)&pcbNeed);
    pJobinfo = (JOB_INFO_1 *) LocalAlloc(LPTR, pcbNeed);
    cbBuf = pcbNeed;
         GetJob(pdevobj->hPrinter,dwJobId,1,(LPBYTE)pJobinfo,cbBuf,(LPDWORD)&pcbNeed);
    WideCharToMultiByte(CP_OEMCP,0,pJobinfo->pDocument,-1,docname,256,NULL,FALSE);


    TERSE(UNITEXT("PrintDocName:%s.\r\n"),docname);//得到的是乱码
    TERSE(UNITEXT("PrintDocName:%s.\r\n"),pJobinfo->pDocument);//得到的是Readme.txt - 记事本
    TERSE(UNITEXT("PrintDocName:%s.\r\n"),pwszDocName);////得到的是Readme.txt - 记事本

我想得到的是诸如 c:\printDoc\Readme.txt一类的全路径名。
知道的,请告诉我不胜感激啊!!!!

最新喜欢:

xmuhlxmuhl
yiqunch
驱动牛犊
驱动牛犊
  • 注册日期2007-07-21
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-14 15:46
我看到hglzw 在http://bbs.driverdevelop.com/htm_data/71/0501/85649.html中的发言,能否现身指导一下,还有其他的大牛们,我在线等啊!谢谢了!
coolboylmk
驱动牛犊
驱动牛犊
  • 注册日期2006-11-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望71点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-09-14 16:47
在驱动中,没办法保证你能获得完整路径。

驱动中的文档名是从应用程序中传过来的,一般是StartDoc函数中的DOCINFO参数,应用程序传递什么,你就只能得到什么,而且这个名称不一定就是文件名。

记事本只能得到文件名,金山WPS则可以得到完整路径,MS WORD我忘了,总之这和应用程序有关。
yiqunch
驱动牛犊
驱动牛犊
  • 注册日期2007-07-21
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-14 17:46
谢谢您的回答!不过等于判了死刑啊!就没有一个比较好的方法在驱动中获得打印文件的全路径名吗?或者其他变通的方法?
coolboylmk
驱动牛犊
驱动牛犊
  • 注册日期2006-11-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望71点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-09-14 20:43
比较难,你在应用程序里想想办法,打印时把完整路径传递给驱动
游客

返回顶部