// uses Math, Port
procedure TForm1.Button1Click(Sender: TObject);
var
hXcv : THandle;
pDefaults : PPrinterDefaults;
pInputData : PChar;
pdwStatus : PDWORD;
PortData1 : TPortData1;
sPortName, sHostAddress, sSNMPCommunity, sQueue, sIPAddress :
String;
begin
// ("<ServerName>\\,XcvMonitor <MonitorName>", für Remotezugriff !!
GetMem(pDefaults, SizeOf(TPrinterDefaults));
pDefaults.pDatatype :=
NIL;
pDefaults.pDevMode :=
NIL;
pDefaults.DesiredAccess := SERVER_ACCESS_ADMINISTER;
//SERVER_ALL_ACCESS;//PRINTER_ACCESS_ADMINISTER;
// cltprinter01
if OpenPrinter('
,XcvMonitor Standard TCP/IP Port', hXcv,
nil)
then begin
// -- Handle erhalten
m.Lines.Add('
hXcv erhalten -> ' + IntToStr(hXcv));
// -- Struktur erstellen
sPortName := '
IP_222.222.222.222';
sHostAddress := '
222.222.222.222';
sSNMPCommunity := '
public';
sQueue := '
';
sIPAddress := '
222.222.222.222';
FillChar(PortData1, SizeOf(TPortData1), #0);
StringToWideChar(sPortName, @PortData1.sztPortName, Min(Length(sPortName) +1, MAX_PORTNAME_LEN));
PortData1.dwVersion := 1;
PortData1.dwProtocol := PROTOCOL_RAWTCP_TYPE;
PortData1.cbSize := SizeOf(TPortData1);
Portdata1.dwReserved := 0;
StringToWideChar(sHostAddress, @PortData1.sztHostAddress, Min(Length(sHostAddress) +1, MAX_NETWORKNAME_LEN));
StringToWideChar(sSNMPCommunity, @PortData1.sztSNMPCommunity, Min(Length(sSNMPCommunity) +1, MAX_SNMP_COMMUNITY_STR_LEN));
PortData1.dwDoubleSpool := 0;
StringToWideChar(sQueue, @PortData1.sztQueue, Min(Length(sQueue) +1, MAX_QUEUENAME_LEN));
StringToWideChar(sIPAddress, @PortData1.sztIPAddress, Min(Length(sIPAddress) +1, MAX_IPADDR_STR_LEN));
PortData1.dwPortNumber := 9100;
PortData1.dwSNMPEnabled := 0;
PortData1.dwSNMPDevIndex := 1;
New(pdwStatus);
// !!! dieser Aufruf funktioniert NICHT !!! Rückgabe "Ungültiger Parameter"
if XcvData(hXcv,
// Handle des Monitors
'
L"AddPort"',
// Befehl an DLL, DeletePort auch möglich
@PortData1,
// PORT_DATA_1 Struktur
SizeOf(PortData1),
// Größe des Puffers
nil, 0,
nil,
// not used
pdwStatus)
then
begin
m.Lines.Add('
XcvData "AddPort" erfolgreich ausgeführt');
end else m.Lines.Add('
Error XcvData -> ' + SysErrorMessage(GetLastError));
m.Lines.Add('
pdwStatus -> ' + SysErrorMessage(pdwStatus^));
ClosePrinter(hXcv);
end else m.Lines.Add('
Error OpenPrinter -> ' + SysErrorMessage(GetLastError));
FreeMem(pDefaults);
end;