C# 操作打印机 系统API 急急急急急 急急急急急 在线等

XBodhi. 2011-11-01 01:41:30
1.我用系统API 获取到 指定打印机的 端口号 来 操作打印机打印数据

求个思路

2.添加一个端口已经成功但是没有反映 代码如下

string printerName="SP-POS88 Series Thermal Printer";
string printerMonitorName="joe 192.168.0.256";
APIPrinter.AddPort(printerName, 100001, printerMonitorName);

[DllImport("Winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
public static extern long AddPort(string printerName, int handle, string printerMonitorName);

热敏小票打印机

...全文
158 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdl2005lyx 2011-11-02
  • 打赏
  • 举报
回复
建议直接用net的打印类PrintDocument!

如果你非要用这个函数,你的函数映射也有问题:

[DllImport("Winspool.drv", CharSet = CharSet.Ansi)]
[return : MarshalAs( UnmanagedType.Bool)]
public static extern bool AddPort(string printerName,IntPtr handle,string printerMonitorName);

gomoku 2011-11-01
  • 打赏
  • 举报
回复
1. AddPort不是这样用的。它是用来显示一个“添加端口向导”的,而不是用来直接添加打印端口的。
比如int result = APIPrinter.AddPort(null, this.Handle, "Standard TCP/IP Port");

2. 标准TCP/IP端口可以手动添加(添加一次就一劳永逸了)。

3. 如果不想添加TCP/IP端口,甚至可以直接调用系统命令行lpr.exe直接给网络打印机传输数据。
注:体统已安装组件要有LPR Port Monitor才可以调用lpr.exe,具体用法见lpr.exe /?
XBodhi. 2011-11-01
  • 打赏
  • 举报
回复
端口 是有 IP 地址的, 用 RAW 方式
XBodhi. 2011-11-01
  • 打赏
  • 举报
回复
我对 端口操作的, 要不 相同打印机太多了。
DENQH 2011-11-01
  • 打赏
  • 举报
回复
用得了这么麻烦么?直接获取打印机打印不就可以了么?管它什么端口?
printDocument1.PrinterSettings.PrinterName="SP-POS88 Series Thermal Printer";
printDocument1.Print();

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧