当前位置: 代码迷 >> C# >> 怎么用程序找到打印机 C
  详细解决方案

怎么用程序找到打印机 C

热度:383   发布时间:2016-05-05 05:32:11.0
如何用程序找到打印机 C#
是通过接口还是打印机设备名称?
为何两种都试了,用CreateFile返回的永远都是-1呢、
代码:
 string prnPort = "USB_R_1";
 iHandle = CreateFile(prnPort, 0x40000000, 0, 0, OPEN_EXISTING, 0, 0);
            if (iHandle != -1)
            {
                return true;
            }
            else
            {
                return false;//"没有连接打印机或者打印机端口不对";

            }
------解决思路----------------------
跟并口和串口不一样,USB的‘设备名’类似于\\?\USB#VID_0483&PID_2434#6&26c545a4&0&1#{4d36e979-e325-11ce-bfc1-08002be10318}
你要用这个‘设备名’来CreateFile。

其中,VID和PID是USB设备的型号ID和产品ID,#6&26c545a4&0&1#部分是系列号,后面是设备的接口GUID。
你可以手动在注册表里搜索,但用程序作不是很容易。

建议你安转打印机驱动程序,并调用Spooler进行打印,而不是自己同USB进行通讯。

------解决思路----------------------
 PrintDocument prtdoc = new System.Drawing.Printing.PrintDocument();
------解决思路----------------------
PrintDialog print=new PrintDialog();
------解决思路----------------------
引用:
Quote: 引用:

PrintDialog print=new PrintDialog();


这个会弹出打印窗口,我就是想直接打印。不带提示的。


那你要知道是用那个打印机打印啊, 比如有多个打印机怎么办?
打印机的名字可以做成配置文件,
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

PrintDialog print=new PrintDialog();


这个会弹出打印窗口,我就是想直接打印。不带提示的。


那你要知道是用那个打印机打印啊, 比如有多个打印机怎么办?
打印机的名字可以做成配置文件,


对啊,这个已经是配置的东西。


是配置的那还找什么?直接用就可以了哇
------解决思路----------------------
只要是正常的安装驱动的打印机,都可以通过printdialog这个办法获取到。
http://download.csdn.net/detail/mjp1234airen4385/1468511
这个资源里有获取打印机列表的方法,也是调用C#自带的类库实现的。
  相关解决方案