songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:15425回复:64

怎样把打印机驱动程序做成安装程序?

楼主#
更多 发布于:2003-06-25 10:35
有一个虚拟打印机的程序,BOSS要求做成安装程序,就是直接一装就好而不到添加打印机里那样添加。要求打包工具用InstallShield。

我的驱动一共就只有两个dll,一个ini,一个inf。InstallShield我从来没用过,用Project Wizard做了一个安装包。运行之后并不能把打印机装上。我去3里看了看,dll和ini都有了,但是BUD文件和GPD文件没有(这两个文件怎么来的我一直不明白),打印机里也没有显示出新装的打印机。(驱动没有问题,添加打印机那样装是好的)


我不知道驱动程序时候能够这样安装,如果能的话请教大家我要怎么做。Project Wizard是否能够完成所有的工作,是不是还要做些别的设置?多谢多谢!

最新喜欢:

ericyuericyu
hcheng_qi
驱动老牛
驱动老牛
  • 注册日期2002-11-07
  • 最后登录2006-04-13
  • 粉丝1
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-25 13:02
还得要自己写一个安装程序专门用来安装打印机驱动,你可以看看AddPrinter和AddPrinterDriver函数。
| -''/"',___,,--''"`-,_¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ `6_ 6¡¡)¡¡ `-,¡¡(¡¡¡¡),`-.__.`)¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ /_Y_./',, _¡¡)¡¡`._¡¡`,``-..-'¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡_.'.`='¡¡ _ / / --'_.','¡¡¡¡¡¡¡¡¡¡¡¡ (il)'¡¡¡¡¡¡(li)''¡¡ ((!-'¡¡¡¡ÃÃÃÃ! ±ðÅÜ£¿!
caesun
驱动小牛
驱动小牛
  • 注册日期2001-12-10
  • 最后登录2006-12-01
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值393点
  • 好评度21点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-25 15:37
你的是2000/XP下的还是98下的?
2000/XP我做过一个,98的还没有.
songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-25 15:38
2000下的!!!!!!!!


[编辑 -  8/15/04 by  songkiki]
caesun
驱动小牛
驱动小牛
  • 注册日期2001-12-10
  • 最后登录2006-12-01
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值393点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-25 17:46
如果是简单的加一个打印机,可以调用
rundll32.exe printui.dll,PrintUIEntry /if /f .\\\\OEMSETUP.INF /r \"LPT1:\" /b \"TVP3000 Printer\" /m \"TVP3000 Printer\"

(假定使用端口是LPT1,打印名是TVP3000)
可以打rundll32.exe printui.dll,PrintUIEntry /?获得更多帮助.

如果是添加端口或者删除端口,好像不写代码不行,要这方面的源程序的话我整理一下再贴出来.
songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-25 17:51
谢谢你,不过这些东西我都是头一次听说,他们要写在哪呢?

[编辑 -  6/25/03 by  songkiki]
caesun
驱动小牛
驱动小牛
  • 注册日期2001-12-10
  • 最后登录2006-12-01
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值393点
  • 好评度21点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-25 18:58
可以在程序里用CreateProcess(...)或exec(...)等函数执行
rundll32.exe printui.dll .....
eg,
CreateProcess(\"C:\\\\WINDOWS\\\\SYSTEM32\\\\RUNDLL32.EXE\", \"rundll32.exe printui.dll,PrintUIEntry /if /f .\\\\OEMSETUP.INF /r \\\"RPT1:\\\" /b \\\"TVP3000 Printer\\\" /m \\\"TVP3000 Printer\\\"\"), NULL, NULL, FALSE, 0, NULL, NULL, &Si, &Pi);

在installsheild里直接抄这两句就行了, RUNDLL32.EXE和PRINTUI.DLL都是WINDOWS自带的.

用这个方法缺点是得不到返回值.


[编辑 -  6/25/03 by  caesun]
hcheng_qi
驱动老牛
驱动老牛
  • 注册日期2002-11-07
  • 最后登录2006-04-13
  • 粉丝1
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-25 20:27
哦,这样也行啊。有AddPrinter和AddPrinterDriver API函数就是用来安装打印机的。98、2k下都可以
| -''/"',___,,--''"`-,_¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ `6_ 6¡¡)¡¡ `-,¡¡(¡¡¡¡),`-.__.`)¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ /_Y_./',, _¡¡)¡¡`._¡¡`,``-..-'¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡_.'.`='¡¡ _ / / --'_.','¡¡¡¡¡¡¡¡¡¡¡¡ (il)'¡¡¡¡¡¡(li)''¡¡ ((!-'¡¡¡¡ÃÃÃÃ! ±ðÅÜ£¿!
songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-06-26 09:22
to caesun :
你说的两句的第一句的省略号代表什么呢?
rundll32.exe printui.dll .....
eg,
是这句吗?
rundll32.exe printui.dll,PrintUIEntry /if /f .\\\\OEMSETUP.INF /r \"LPT1:\" /b \"TVP3000 Printer\" /m \"TVP3000 Printer\"
我的InstallShield 是用Project wizard做的,说实话,我第一次用它,如果要写代码的话是不是就不能用Project wizard了?

to 刷牙的小老鼠:
你给我的两个函数是要在那里调用呢?也是InstallShield 里吗?那么问题同上。


谢谢你们!
songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-26 10:00
caesun:
你能给我找找添加端口的代码吗?或者发个工程给我,谢谢谢谢啦!
caesun
驱动小牛
驱动小牛
  • 注册日期2001-12-10
  • 最后登录2006-12-01
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值393点
  • 好评度21点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-26 10:02
you can open a cmd prompt windown and type
rundll32.exe printui.dll,PrintUIEntry /if /f .\\\\OEMSETUP.INF /r \"LPT1:\" /b \"TVP3000 Printer\" /m \"TVP3000 Printer\"

to have a test.

for more helps, please type rundll32.exe printui.dll /?

good luck!
hcheng_qi
驱动老牛
驱动老牛
  • 注册日期2002-11-07
  • 最后登录2006-04-13
  • 粉丝1
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-26 13:24
to caesun :
to 刷牙的小老鼠:
你给我的两个函数是要在那里调用呢?也是InstallShield 里吗?那么问题同上。


谢谢你们!


不是,你不写再作一个程序专门用来安装你的打印机。这个程序最后和打印机驱动一起打包在installshield中,安装时由installshield安装程序调用安装
| -''/"',___,,--''"`-,_¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ `6_ 6¡¡)¡¡ `-,¡¡(¡¡¡¡),`-.__.`)¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ /_Y_./',, _¡¡)¡¡`._¡¡`,``-..-'¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡_.'.`='¡¡ _ / / --'_.','¡¡¡¡¡¡¡¡¡¡¡¡ (il)'¡¡¡¡¡¡(li)''¡¡ ((!-'¡¡¡¡ÃÃÃÃ! ±ðÅÜ£¿!
caesun
驱动小牛
驱动小牛
  • 注册日期2001-12-10
  • 最后登录2006-12-01
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值393点
  • 好评度21点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-26 17:02
楼主请查收PORT操作的程序.
程序没整理过,简陋的很.
songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-26 17:07
好人啊,感激!!!我在看,就是还没看明白,呵呵
songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-06-27 09:40
为什么好多乱码呢?
// stdafx.h :
songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-06-27 09:58
…>_<… 晕了,看不懂啊,你的程序是想实现什么功能呢?
tyro_zhang
驱动牛犊
驱动牛犊
  • 注册日期2003-03-21
  • 最后登录2012-12-17
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望26点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-06-27 14:06
讨论了半天,能不能把代码贴出来啊?共同学习。
我是用AddPrinter和AddPrinterDriver API函数安装打印机的,安装成功了但不能使用DeletePrinter删除打印机,不知如何解决。
songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-06-27 17:24
哇!那能不能把你的代码给我一份啊,我能装就好!!!

他给我发的是一个工程,我没看懂什么用。

到是上面那个运行命令行有用,可是不知道哪里不对,运行说执行错误,正在研究中……
songkiki
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2004-08-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-06-27 17:48
还要请教一下caesun :

你的这句
rundll32.exe printui.dll,PrintUIEntry /if /f .\\\\OEMSETUP.INF /r \"LPT1:\" /b \"TVP3000 Printer\" /m \"TVP3000 Printer\"
最后一个\"TVP3000 Printer\"说的是什么呢?前面那个应该是打印机的名称,这个也是吗?我看帮助上说应该是打印机的信息,不过如果是我自己写的程序,应该是什么呢?就是打印机名字吗?


这个, 运行 inf 安装: 和用 inf 添加打印机驱动程序: 的区别是什么呢?我看在帮助里这是两个类型,可是我觉得意义是一样的啊



[编辑 -  6/27/03 by  songkiki]
hcheng_qi
驱动老牛
驱动老牛
  • 注册日期2002-11-07
  • 最后登录2006-04-13
  • 粉丝1
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-06-28 09:19
讨论了半天,能不能把代码贴出来啊?共同学习。
我是用AddPrinter和AddPrinterDriver API函数安装打印机的,安装成功了但不能使用DeletePrinter删除打印机,不知如何解决。


delete的过程应该正好是相反的,你的先用DeletePrinterDriver删除打印机驱动,然后调用DeletePrinter试试
| -''/"',___,,--''"`-,_&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl; &iexcl;&iexcl;&iexcl;&iexcl; `6_ 6&iexcl;&iexcl;)&iexcl;&iexcl; `-,&iexcl;&iexcl;(&iexcl;&iexcl;&iexcl;&iexcl;),`-.__.`)&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl; &iexcl;&iexcl;&iexcl;&iexcl; /_Y_./',, _&iexcl;&iexcl;)&iexcl;&iexcl;`._&iexcl;&iexcl;`,``-..-'&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl; &iexcl;&iexcl;_.'.`='&iexcl;&iexcl; _ / / --'_.','&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl; (il)'&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;&iexcl;(li)''&iexcl;&iexcl; ((!-'&iexcl;&iexcl;&iexcl;&iexcl;&Atilde;&Atilde;&Atilde;&Atilde;! ±&eth;&Aring;&Uuml;&pound;&iquest;!
上一页
游客

返回顶部