阅读:4799回复:6
怎样为虚拟打印机添加端口
我要在安装虚拟打印机时自动添加端口,我想实现通过手工调用AddPort()的方法来添加端口.我的代码是:
char* sMonitorName = _TEXT("localmon");//Monitor名称 BOOL b; b = AddPort(NULL, this->m_hWnd, sMonitorName ); 程序没有成功,好像是Monitor名称不对.其实我只想用Win2000的自带的Monitor来添加端口,那位大虾可以告诉我这里应该填什么?谢谢了. |
|
沙发#
发布于: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); |
|
板凳#
发布于:2004-03-30 10:16
谢谢Hellboy的回帖,我马上去试试。呵呵。万分感谢
|
|
地板#
发布于:2004-03-30 22:51
我已经试过了,一切OK.偶想要的就是这个东东.呵呵.可是我怎么把分数给你呢.郁闷!
|
|
地下室#
发布于:2004-03-31 16:33
呵呵
楼主太客气了 |
|
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); ... |
|
6楼#
发布于:2007-03-28 15:18
太感谢了!!!
|
|