hm ... DFÜ Verbindung ... ISDN/Modem ? oder eine Internet Verbindung ?
und was verstehst du unter "... Synchronisation" ?
Ich sage mal so : kannst du das was du vorhast mit Windows "Bordmitteln" machen ?
Wenn ja "könnte" es mit API Aufrufen klappen, aber ich "denke" das du wohl eher eine COM LIB,
Code: Alles auswählen
DLLFUNCTION InternetGetConnectedState( @dwFlags,nReserved ) USING STDCALL FROM WININET.DLL
DLLFUNCTION RasDialA(Extensions,Phonbook,@CallingParam,nType,nHandler,@nConnHandle)USING STDCALL FROM RASAPI32.DLL
DLLFUNCTION RasHangUpA(nConnHandle) USING STDCALL FROM RASAPI32.DLL
DLLFUNCTION RasGetErrorStringA(nNr,@buf,nLen) USING STDCALL FROM RASAPI32.DLL
DLLFUNCTION RasGetEntryDialParamsA(PhonBook,@EntryBuf,@lPwd) USING STDCALL FROM RASAPI32.DLL
DLLFUNCTION inet_addr( cIP ) USING STDCALL FROM wsock32.dll
DLLFUNCTION IcmpCreateFile( ) USING STDCALL FROM icmp.dll
DLLFUNCTION IcmpCloseHandle( IcmpHandle ) USING STDCALL FROM icmp.dll
DLLFUNCTION IcmpSendEcho( IcmpHandle , DestinationAddress, RequestData, RequestSize, RequestOptions, ReplyBuffer, ReplySize, Timeout ) USING STDCALL FROM icmp.dll
DLLFUNCTION WSAGetLastError( ) USING STDCALL FROM wsock32.dll
* Ras Dial
* Parametros : cEntry = Nombrel del dial up
* cPhone = Telefono del servidor o web server
* cCallBack = Nose
* cUserName = Nombre del usuario
* cPassword = palabra clave del usuario
* cDomain = Nombre del dominio si es NT o Win2003 Server
FUNCTION RasDial ( cEntry, cPhone, cCallBack, cUserName, cPassword,cDomain ) // Rasverbindung öffnen
* Begin
#define RAS_MaxEntryName 256
#define RAS_MaxPhoneNumber 128
#define RAS_MaxCallbackNumber 128
#define UNLEN 256
#define PWLEN 256
#define DNLEN 15
LOCAL rasHandle := 0
LOCAL erg
LOCAL aDialParam
LOCAL cDialParam
LOCAL cBuf
IF !EMPTY(cEntry)
cEntry = PADR(IIF(cEntry=NIL,'',cEntry),RAS_MaxEntryName+1,CHR(0))
IF cPhone <> NIL
cPhone = PADR(IIF(cPhone=NIL,'',cPhone),RAS_MaxPhoneNumber+1,CHR(0))
cCallBack = PADR(IIF(cCallBack=NIL,'',cCallBack),RAS_MaxCallbackNumber+1,CHR(0))
cUserName = PADR(IIF(cUserName=NIL,'',cUserName),UNLEN+1,CHR(0))
cPassword = PADR(IIF(cPassword=NIL,'',cPassword),PWLEN+1,CHR(0))
cDomain = PADR(IIF(cDomain=NIL,'',cDomain),DNLEN+1,CHR(0))
aDialParam = BaInit(7)
// DialParameter
BaStruct(aDialParam,1052) // Size
BaStruct(aDialParam,cEntry) // Entry
BaStruct(aDialParam,cPhone) // Phone
BaStruct(aDialParam,cCallBack) // Callbacknumber
BaStruct(aDialParam,cUserName) // Username
BaStruct(aDialParam,cPassword) // Password
BaStruct(aDialParam,cDomain) // Domain
cDialParam = BaAccess(aDialParam)
ELSE
cDialParam = RasGetEntryDialParamsA( , cEntry ) // Entryparameter holen
ENDIF
erg = RasDialA(0,0,@cDialParam,0,0,@rasHandle)
RASERROR(erg,rasHandle,@cBuf)
ENDIF
RETURN {iif(erg=0,.T.,.F.), rasHandle ,cBuf }
PROCEDURE RasHangUp ( rasHandle )
* Begin
IF valtype( rasHandle ) == 'N'
IF rasHandle > 0
RasHangUpA(rasHandle)
ENDIF
ENDIF
RETURN
PROCEDURE RasError ( nNr, rasHandle , cBuf )
* Begin
LOCAL erg
cBuf := space(256)
erg := RasGetErrorStringA(nNr,@cbuf,256)
IF nNr <> 0
IF erg <> 0
oGet:SetData( "No Conectando:"+STRZERO(nNr,3)+"-"+TRIM(ConvToOEMCP(cbuf)))
ELSE
oGet:SetData( "Conectando:"+STRZERO(nNr,3)+"-"+TRIM(ConvToOEMCP(cbuf)))
ENDIF
IF rasHandle <> NIL
RasHangUp(rasHandle)
ENDIF
ENDIF
RETURN
FUNCTION RasActive(aConn)
* Begin
LOCAL nDll,aRasPm:=BaInit(5),cRasPm,nLenBuf:=412,nNumCon:=0
LOCAL nHnd,cEntry,nI
aConn:={}
BaStruct(aRasPm,l2bin(412))
BaStruct(aRasPm,l2bin(0))
BaStruct(aRasPm,Space(257))
BaStruct(aRasPm,Space(17))
BaStruct(aRasPm,Space(129))
cRasPm:=BaAccess(aRasPm)
IF ( nDll:=DllLoad("RASAPI32.DLL") )==0
RETURN ( .F. )
ENDIF
IF DllCall(nDll,DLL_STDCALL,"RasEnumConnectionsA",@cRasPm,@nLenBuf,@nNumCon)==0
ELSEIF nNumCon<>0
aRasPm:=BaInit(5)
FOR nI:=1 TO nNumCon
BaStruct(aRasPm,l2bin(412))
BaStruct(aRasPm,l2bin(0))
BaStruct(aRasPm,Space(257))
BaStruct(aRasPm,Space(17))
BaStruct(aRasPm,Space(129))
NEXT nI
cRasPm:=BaAccess(aRasPm)
nNumCon:=0
ENDIF
DllUnLoad(nDll)
FOR nI:=1 TO nNumCon
BaExtract(aRasPm,cRasPm)
nHnd:=bin2l(BaExtract(aRasPm,cRasPm))
cEntry:=BaExtract(aRasPm,cRasPm)
cEntry:=subs(cEntry,1,at(chr(0),cEntry)-1)
AAdd(aConn,{cEntry,nHnd})
NEXT nI
RETURN ( .T. )
FUNCTION RasEntries(aEnt)
* Begin
LOCAL nDll,aRasPm:=BaInit(2),cRasPm,nLenBuf:=264,nNumCon:=0,nI,cEntry
aEnt:={}
BaStruct(aRasPm,l2bin(264))
BaStruct(aRasPm,Space(260))
cRasPm:=BaAccess(aRasPm)
IF ( nDll:=DllLoad("RASAPI32.DLL") )==0
RETURN ( .F. )
ENDIF
IF DllCall(nDll,DLL_STDCALL,"RasEnumEntriesA",0,0,@cRasPm,@nLenBuf,@nNumCon)==0
ELSEIF nNumCon<>0
aRasPm:=BaInit(nNumCon*2)
FOR nI:=1 TO nNumCon
BaStruct(aRasPm,l2bin(264))
BaStruct(aRasPm,Space(260))
NEXT nI
cRasPm:=BaAccess(aRasPm)
nNumCon:=0
DllCall(nDll,DLL_STDCALL,"RasEnumEntriesA",0,0,@cRasPm,@nLenBuf,@nNumCon)
ENDIF
DllUnLoad(nDll)
FOR nI:=1 TO nNumCon
BaExtract(aRasPm,cRasPm)
cEntry:=BaExtract(aRasPm,cRasPm)
cEntry:=subs(cEntry,1,at(chr(0),cEntry)-1)
AAdd(aEnt,cEntry)
NEXT nI
RETURN ( .T. )
FUNCTION Ping()
* Begin
LOCAL IcmpHandle,Replicas
LOCAL RequestData:="Esto es un ping" , RequestSize:=15, RequestOptions:="", ReplyBuffer:=space(278), ReplySize:=278, Timeout:=500
PARA DestinationAddress
DestinationAddress:=left(alltrim(DestinationAddress)+space(15),15)
IcmpHandle:=IcmpCreateFile()
Replicas := IcmpSendEcho(IcmpHandle, inet_addr(DestinationAddress), RequestData, RequestSize,0, ReplyBuffer, ReplySize, Timeout)
IcmpCloseHandle(IcmpHandle)
RETURN iif( replicas > 0 , .T. , .F. )