以编程方式删除打印机



我想删除映射的打印机并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)和DeletePrinterConnection A(ANSI)

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

这会使操作成功完成,但没有成功,打印机仍在。

返回值

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

来自MSDN:

pName[in]

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

DeletePrinterConnection函数

弄清楚了,因为它是一台映射打印机,所以它期望的名称是

\serverprinter name

最新更新