我想删除映射的打印机并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