houjun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-21
  • 最后登录2004-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4686回复:6

怎样为虚拟打印机添加端口

楼主#
更多 发布于:2004-03-29 22:18
我要在安装虚拟打印机时自动添加端口,我想实现通过手工调用AddPort()的方法来添加端口.我的代码是:
char* sMonitorName = _TEXT("localmon");//Monitor名称
BOOL b;
b = AddPort(NULL, this->m_hWnd, sMonitorName );
程序没有成功,好像是Monitor名称不对.其实我只想用Win2000的自带的Monitor来添加端口,那位大虾可以告诉我这里应该填什么?谢谢了.
Hellboy
驱动牛犊
驱动牛犊
  • 注册日期2003-07-22
  • 最后登录2005-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-30 10:00
名称要求是Local Port
最好是用下面这样的代码来添加端口,使用addport会弹出一个添加端口的对话框.
其中的CheckError()是我自己写的一个函数,主要是使用GetLastError()来判断是否出错了.

HANDLE hXcv;
PRINTER_DEFAULTS pPrintDef;
memset(&pPrintDef,0,sizeof(pPrintDef));
pPrintDef.DesiredAccess = SERVER_ACCESS_ADMINISTER;

WCHAR pszPortName[512]=L"ppfileport";
WCHAR dwReturn[512];
DWORD cbNeeded;
DWORD dwStatus;

OpenPrinter(",XcvMonitor Local Port", &hXcv, &pPrintDef);
if(CheckError("打开端口句柄"))
return ;
SetLastError(0);
XcvData(hXcv,L"AddPort",(PBYTE)pszPortName,(int)(wcslen(pszPortName) + 1)*sizeof(WCHAR),(PBYTE) dwReturn,0,&cbNeeded,&dwStatus);
SetLastError(dwStatus);
CheckError("");
ClosePrinter(hXcv);
houjun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-21
  • 最后登录2004-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-30 10:16
谢谢Hellboy的回帖,我马上去试试。呵呵。万分感谢
houjun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-21
  • 最后登录2004-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-30 22:51
我已经试过了,一切OK.偶想要的就是这个东东.呵呵.可是我怎么把分数给你呢.郁闷!
Hellboy
驱动牛犊
驱动牛犊
  • 注册日期2003-07-22
  • 最后登录2005-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-31 16:33
呵呵
楼主太客气了
mswilldie
驱动牛犊
驱动牛犊
  • 注册日期2003-10-28
  • 最后登录2004-06-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-08 16:32
我使用
OpenPrinter(",XcvMonitor Local Port", &hXcv, &pPrintDef);
总是报错
...
XcvData(hXcv,L"AddPort",(PBYTE)pszPortName,(int)(wcslen(pszPortName) + 1)*sizeof(WCHAR),(PBYTE) dwReturn,0,&cbNeeded,&dwStatus);
...
suzhiyuan
驱动牛犊
驱动牛犊
  • 注册日期2007-02-25
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-03-28 15:18
太感谢了!!!
游客

返回顶部