Hellboy
驱动牛犊
驱动牛犊
  • 注册日期2003-07-22
  • 最后登录2005-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4086回复:8

关于AddPrinterDriver的pDependentFiles的讨论

楼主#
更多 发布于:2004-04-08 14:53
Points to a null-terminated string that specifies the files the driver is dependent on. Each filename in the string is also terminated with a null (for example, “PSCRIPT.DLL\\0QMS810.PPD\\0PSCRPTUI.DLL\\0PSPCRIPTUI.HLP\\0PSTEST.TXT\\0\\0”).

上面是MSDN原文,pDependentFiles中文件名之间是NULL,整个字符串结束符也是NULL。
lstrcpy“PSCRIPT.DLL\\0QMS810.PPD\\0PSCRPTUI.DLL\\0PSPCRIPTUI.HLP\\0PSTEST.TXT\\0\\0”). 这样的语句只能将PSCRIPT.DLL的值赋值给str,后面的部分都会被忽略掉
想到一个解决的办法是 暂时将‘\\0’用其他字符代替(如:'*'),然后在整个字符串中查找'*',用'\\0'去替换。

不知道哪位有更专业一点的实现方法 :)


[编辑 -  4/8/04 by  Hellboy]
davy_yang
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-08 18:25
兄弟你说的很对,我也是今天才发现这个问题的。下面的代码可以解决这个问题:
memset(lpDependecy,0,sizeof(lpDependecy));
lstrcat(lpDependecy,_TEXT("Dragon.inf\0Stdname.gpd\0Dragon.ini\0Dragon.dll\0Unires.dll\0\0"));
char *q = lpDependecy;
lstrcpy(q, _T("Unires.dll\0"));
q += lstrlen(_T("Unires.dll\0"))+1;

lstrcpy(q, _T("Stdname.gpd\0"));
q += lstrlen(_T("Stdname.gpd\0"))+1;

lstrcpy(q, _T("Dragon.ini\0"));
q += lstrlen(_T("Dragon.ini\0"))+1;

lstrcpy(q, _T("Dragon.dll\0"));
q += lstrlen(_T("Dragon.dll\0"))+1;

lstrcpy(q, _T("Dragon.inf\0"));
q += lstrlen(_T("Dragon.inf\0"))+1;
不过,可惜的是我改后还是没有安装成功的。关于打印机安装的话题,这个论坛有很多,可惜没有一个说到具体的地方。我也正苦于没有安装代码呀,希望斑竹能发些好的意见!!!
davy_yang@163.com
davy_yang
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-08 18:26
兄弟你说的很对,我也是今天才发现这个问题的。下面的代码可以解决这个问题:
memset(lpDependecy,0,sizeof(lpDependecy));
lstrcat(lpDependecy,_TEXT("Dragon.inf\0Stdname.gpd\0Dragon.ini\0Dragon.dll\0Unires.dll\0\0"));

char *q = lpDependecy;
lstrcpy(q, _T("Unires.dll\0"));
q += lstrlen(_T("Unires.dll\0"))+1;

lstrcpy(q, _T("Stdname.gpd\0"));
q += lstrlen(_T("Stdname.gpd\0"))+1;

lstrcpy(q, _T("Dragon.ini\0"));
q += lstrlen(_T("Dragon.ini\0"))+1;

lstrcpy(q, _T("Dragon.dll\0"));
q += lstrlen(_T("Dragon.dll\0"))+1;

lstrcpy(q, _T("Dragon.inf\0"));
q += lstrlen(_T("Dragon.inf\0"))+1;

不过,可惜的是我改后还是没有安装成功的。关于打印机安装的话题,这个论坛有很多,可惜没有一个说到具体的地方。我也正苦于没有安装代码呀,希望斑竹能发些好的意见!!!
davy_yang@163.com
davy_yang
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-08 18:27
char *q = lpDependecy;
lstrcpy(q, _T("Unires.dll\0"));
q += lstrlen(_T("Unires.dll\0"))+1;

lstrcpy(q, _T("Stdname.gpd\0"));
q += lstrlen(_T("Stdname.gpd\0"))+1;

lstrcpy(q, _T("Dragon.ini\0"));
q += lstrlen(_T("Dragon.ini\0"))+1;

lstrcpy(q, _T("Dragon.dll\0"));
q += lstrlen(_T("Dragon.dll\0"))+1;

lstrcpy(q, _T("Dragon.inf\0"));
q += lstrlen(_T("Dragon.inf\0"))+1;
davy_yang@163.com
davy_yang
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-08 18:28
不好意思:这里也发不了结束符“\0”
char *q = lpDependecy;
lstrcpy(q, _T("Unires.dll"));
q += lstrlen(_T("Unires.dll"))+1;

lstrcpy(q, _T("Stdname.gpd"));
q += lstrlen(_T("Stdname.gpd"))+1;

lstrcpy(q, _T("Dragon.ini"));
q += lstrlen(_T("Dragon.ini"))+1;

lstrcpy(q, _T("Dragon.dll"));
q += lstrlen(_T("Dragon.dll"))+1;

lstrcpy(q, _T("Dragon.inf"));
q += lstrlen(_T("Dragon.inf"))+1;
davy_yang@163.com
davy_yang
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-08 18:28
char *q = lpDependecy;
lstrcpy(q, _T("Unires.dll"));
q += lstrlen(_T("Unires.dll"))+1;

lstrcpy(q, _T("Stdname.gpd"));
q += lstrlen(_T("Stdname.gpd"))+1;

lstrcpy(q, _T("Dragon.ini"));
q += lstrlen(_T("Dragon.ini"))+1;

lstrcpy(q, _T("Dragon.dll"));
q += lstrlen(_T("Dragon.dll"))+1;

lstrcpy(q, _T("Dragon.inf"));
q += lstrlen(_T("Dragon.inf"))+1;
davy_yang@163.com
davy_yang
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-04-14 09:34
这问题我考虑了n久了!!!今天终于解决,看来你这分定是要给我的了,呵呵……
就是直接付值给结构体
di3.pDependentFiles = \"file1.DLL\\0file2.GPD\\0file3.INI\\0file4.dll\\0\\0\";
davy_yang@163.com
Hellboy
驱动牛犊
驱动牛犊
  • 注册日期2003-07-22
  • 最后登录2005-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-04-15 13:57
兄弟!
我是Moonwell◎g4啊
icboy591
驱动牛犊
驱动牛犊
  • 注册日期2009-05-26
  • 最后登录2010-04-13
  • 粉丝16
  • 关注1
  • 积分64分
  • 威望611点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2009-11-08 21:53
回 2楼(davy_yang) 的帖子
请问最后能调出来不?
游客

返回顶部