Мне нужно получить IP-адрес принтера, но я не добился большого успеха.
Уже пробовал разными способами. В настоящее время мой код выглядит так:
void Spl::GetIpAddress(LPSTR printerName)
{
HANDLE hPrinter;
PBYTE wAddress = NULL;
DWORD size;
DWORD status;
LPSTR portName = GetProt(printerName);
std::ostringstream strTemp;
strTemp << portName;
string temp = ",XcvPort " + strTemp.str();
//temp = ,XcvPort 192.168.2.247
LPSTR tempLPSTR((LPSTR)temp.c_str());
if(OpenPrinter(tempLPSTR,&hPrinter,NULL))
{
if (XcvData(hPrinter, L"IPAddress", NULL, 0,wAddress,31, &size,&status))
{}
}
}
Когда он пытается вызвать функцию XcvData, она не вводит ‘IF’. И мой объект «wAddress» остается пустым.
Потому что я не получаю?
OBS: этот код основан на документе MSDN: http://msdn.microsoft.com/en-us/library/windows/hardware/ff562761(v=vs.85).aspx
Поблагодарить!
Вы пропускаете имя сервера в OpenPrinter
вызов. Имя принтера должно выглядеть примерно так:
"\\\\myServer\\,XvcPort myPort"
Чтобы подтвердить, что это проблема, позвоните GetLastError
когда OpenPrinter
выходит из строя.
Других решений пока нет …