阅读:4086回复:8
关于AddPrinterDriver的pDependentFiles的讨论
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] |
|
沙发#
发布于: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; 不过,可惜的是我改后还是没有安装成功的。关于打印机安装的话题,这个论坛有很多,可惜没有一个说到具体的地方。我也正苦于没有安装代码呀,希望斑竹能发些好的意见!!! |
|
|
板凳#
发布于: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; 不过,可惜的是我改后还是没有安装成功的。关于打印机安装的话题,这个论坛有很多,可惜没有一个说到具体的地方。我也正苦于没有安装代码呀,希望斑竹能发些好的意见!!! |
|
|
地板#
发布于: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; |
|
|
地下室#
发布于: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; |
|
|
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; |
|
|
6楼#
发布于:2004-04-14 09:34
这问题我考虑了n久了!!!今天终于解决,看来你这分定是要给我的了,呵呵……
就是直接付值给结构体 di3.pDependentFiles = \"file1.DLL\\0file2.GPD\\0file3.INI\\0file4.dll\\0\\0\"; |
|
|
7楼#
发布于:2004-04-15 13:57
兄弟!
我是Moonwell◎g4啊 |
|
8楼#
发布于:2009-11-08 21:53
回 2楼(davy_yang) 的帖子
请问最后能调出来不? |
|