• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 关于添加打印端口的问题(100分),谢谢~~~

关于添加打印端口的问题(100分),谢谢~~~

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了端口冲突问题,端口占用问题,打印机端口问题,端口问题,网络端口问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于添加打印端口的问题(100分),谢谢~~~
描述:

我需要安装打印驱动到Local Port。也就是说在安装驱动前需要在机器上添加一个端口,类型是localport。试用了两种方法:
1、AddPort(NULL,NULL,"Local Port")方法:但这种会弹出对话框,要求用户输入端口名称
2、修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports,这样需要重启spooler服务。
我想做到在安装驱动前添加好端口,并且不需要用户参与。应该怎么做了?请教大家~


解决方案1:

但是使用用上面的代码的前提是在应用层调用AddPort时要指定第二个参数为NULL

解决方案2:

你可以在DDK 2000/XP自带的Localui文件夹中,打开config.c文件,把对应的AddPortUI函数修改成如下的代码就行:
BOOL
AddPortUI(
    PCWSTR pszServer,
    HWND   hWnd,
    PCWSTR pszMonitorNameIn,
    PWSTR  *ppszPortNameOut
)
{
    PWSTR  pszPortName = NULL;
    BOOL   rc = TRUE;
    WCHAR  szLocalMonitor[MAX_PATH+1];
    DWORD  dwReturn, dwStatus;
    DWORD  cbNeeded;
    PRINTER_DEFAULTS Default;
    PWSTR  pszServerName = NULL;
    HANDLE  hXcv = NULL;
    /* Get the user to enter a port name:
     */
    if (!(pszServerName = ConstructXcvName(pszServer, pszMonitorNameIn, L"XcvMonitor"))) {
        rc = FALSE;
        goto Done;
    }
  
    Default.pDatatype = NULL;
    Default.pDevMode = NULL;
    Default.DesiredAccess = SERVER_ACCESS_ADMINISTER;
    if (!(rc = OpenPrinter((PWSTR) pszServerName, &hXcv, &Default))) {
        rc = FALSE;
        goto Done;
    }
if(hWnd)    //添加了这一条语句,你就不会再看到弹出来的对话框了
{
          if (!(pszPortName=GetPortName(hWnd, hXcv))) {
          rc = FALSE;
          goto Done;
       } 
}
else{  
                //这里填写你自己在应用层调用AddPort时设置的端口名字
       pszPortName=L"Local Port";                                               
                            
}
    // We can't Add, Configure, or Delete Remote COM ports
    if (IS_COM_PORT(pszPortName) || IS_LPT_PORT(pszPortName)) {
        SetLastError(ERROR_NOT_SUPPORTED);
        rc = FALSE;
        goto Done;
    }
    if(IS_COM_PORT(pszPortName))
        CharUpperBuff(pszPortName, 3);
    else if(IS_LPT_PORT(pszPortName))
        CharUpperBuff(pszPortName, 3);
    rc = XcvData(   hXcv,
                    L"AddPort",
                    (PBYTE) pszPortName,
                    (wcslen(pszPortName) + 1)*sizeof(WCHAR),
                    (PBYTE) &dwReturn,
                    0,
                    &cbNeeded,
                    &dwStatus);
    if (rc) {
        if(dwStatus == ERROR_SUCCESS) {
            if(ppszPortNameOut)
                *ppszPortNameOut = AllocSplStr(pszPortName);
            if(IS_LPT_PORT(pszPortName))
                rc = ConfigLPTPort(hWnd, hXcv);
            else if(IS_COM_PORT(pszPortName))
                rc = ConfigCOMPort(hWnd, hXcv, pszServer, pszPortName);
        } else if (dwStatus == ERROR_ALREADY_EXISTS) {
            Message( hWnd, MSG_ERROR, IDS_LOCALMONITOR, IDS_PORTALREADYEXISTS_S, pszPortName );
        } else {
            SetLastError(dwStatus);
            rc = FALSE;
        }
    }
Done:
if(hWnd)
FreeSplStr(pszPortName);
    FreeSplMem(pszServerName);
    if (hXcv)
        ClosePrinter(hXcv);
    return rc;
}
 编译好localui后加载到注册表和WINDOWS的System 32目录下,就可以了。
 我之前也遇到和搂主同样的问题,这样做以后就解决了。

解决方案3:

我也来顶一个!
我碰到的问题更麻烦,

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于添加打印端口的问题(100分),谢谢~~~

相关文章

  • 2017-06-05 Quartus131无法产生sdo延时文件?
  • 2017-06-05 谁有EDA_BOMHelper工具
  • 2017-06-05 android蓝牙软件接收STM32发送过来字节流问题
  • 2017-06-05 请教哪里有vxd和vmm服务的手册下载?
  • 2017-06-05 与注册表有关的问题
  • 2017-06-05 STM32如何定义变量不浪费内存
  • 2017-06-05 keil4编译多头文件程序时重复定义怎么办?
  • 2017-06-05 求rtl8019as驱动程序
  • 2017-06-05 cy7c68013固件程序
  • 2017-06-05 视频的显示质量问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 开机时,看不到新加驱动输出的串口信息,请问这是什么原因?
    • 74HC14搭晶振测量电路
    • 磁盘驱动是不是仍需调用int13对系统磁盘进行读写(ide驱动或者scsi驱动等)
    • 坐标云台控制(嵌入式或者x86
    • 问问多Interface的USB驱动!
    • 科大讯飞语音芯片XFS5152CE这里有大神之前玩过吗?
    • NV-Geforce4-MX400是什么显卡啊,从哪里找驱动程序啊??
    • quartus引脚分配的作用
    • 请教各位有关bios的相关信息,谢谢啦!
    • 神龙卡驱动如何安装?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有