是通过接口还是打印机设备名称?
为何两种都试了,用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();
------解决思路----------------------
那你要知道是用那个打印机打印啊, 比如有多个打印机怎么办?
打印机的名字可以做成配置文件,
------解决思路----------------------
PrintDialog print=new PrintDialog();
这个会弹出打印窗口,我就是想直接打印。不带提示的。
那你要知道是用那个打印机打印啊, 比如有多个打印机怎么办?
打印机的名字可以做成配置文件,
对啊,这个已经是配置的东西。
是配置的那还找什么?直接用就可以了哇
------解决思路----------------------
只要是正常的安装驱动的打印机,都可以通过printdialog这个办法获取到。
http://download.csdn.net/detail/mjp1234airen4385/1468511
这个资源里有获取打印机列表的方法,也是调用C#自带的类库实现的。