0

プリンターの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

感謝!

4

1 に答える 1

1

OpenPrinter呼び出しにサーバー名がありません。プリンター名は次のようになります。

"\\\\myServer\\,XvcPort myPort"

それが問題であることを確認するには、GetLastErrorwhen OpenPrinterfails を呼び出します。

于 2013-04-12T19:17:07.240 に答える