以编程方式删除打印机

时间:2014-10-13 16:28:24

标签: winapi

我想删除映射的打印机和P /调用以下

[DllImport("winspool.drv", EntryPoint = "DeletePrinterConnection", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int DeletePrinterConnection(string pName);

当我只使用打印机名称或(服务器上的PrinterName)时,我一直得到打印机名称无效。

这是什么名称作为输入?

更新1

[DllImport("winspool.drv", EntryPoint = "DeletePrinterConnection")]
private static extern int DeletePrinterConnectionA(string pName);

DeletePrinterConnectionW(Unicode)和DeletePrinterConnectionA(ANSI)

int r = DeletePrinterConnectionA(printer);
if (!r.Equals(0))
{
   throw new Win32Exception(Marshal.GetLastWin32Error());
}

这会引发操作成功完成 - 但它没有完成,打印机仍在那里。

返回值

如果函数成功,则返回值为非零值。 如果函数失败,则返回值为零。

2 个答案:

答案 0 :(得分:0)

来自MSDN:

  

pName [in]

     

指向以null结尾的字符串的指针,该字符串指定名称   要删除的打印机连接。

DeletePrinterConnection function

答案 1 :(得分:0)

想出来,因为它是一个映射的打印机,它所期望的名称是

\\server\printer name